Articles of networking

NetServerEnum创build不会closures的工作线程

当试图解决我以前提出的SO问题时,我发现即使没有我的线程,也会出现问题。 我现在拥有的是一个非常简单的单线程代码,它调用了NetServerEnum() 。 当返回时,它调用NetApiBufferFree()并从main返回,这应该结束进程。 在这一点上,我的线程真正结束,但进程不会退出,因为有4个线程打开(而不是我): 1 * ntdll.dll!TplsTimerSet+0x7c0 (堆栈位于ntdll.dll!WaitForMultipleObjects ) (这个调用NetServerEnum()打开) 3 * ndll.dll!RtValidateHeap+0x170 (堆栈位于ntdll.dll!ZwWaitWorkViaWorkerFactory+0xa ) (这些是我的代码返回时打开) 更新:如果我杀死运行ntdll.dll!TplsTimerSet + 0x7c0(使用进程资源pipe理器)的线程,返回main() ,程序正常退出。 我认为这可能是有用的知道。 更新2:(一些更多的技术信息)我正在使用: MS Visual Studio 2010年终极x64 (SP1Rel) Win7企业SP1代码是C(但编译为c + +开关是)子系统:WINDOWS编译器:cl.exe(使用IDE)所有其他参数是默认的。 我使用自修改的入口点( /ENTRY:"entry" ),它是唯一的function在我的程序中): int entry(void) { SERVER_INFO_101* si; DWORD a,b; NET_API_STATUS c; c = NetServerEnum ( NULL , 101 , (LPBYTE*) &si , MAX_PREFERRED_LENGTH […]

本地系统与系统与本地系统Windows系统帐户

我对Windows内置帐户的MS文档感到困惑。 SQL Server 2008 R2联机文档“设置Windows服务帐户”告诉 “ 本地系统是一个非常高权限的内置帐户,它在本地系统上拥有广泛的权限,并充当networking上的计算机, 帐户的实际名称是”NT AUTHORITY \ SYSTEM “。 而MSDN文章“LocalSystem帐户”,请参阅2010年8月5日的评论中的链接,告诉: LocalSystem帐户是由服务控制pipe理器使用的预定义的本地帐户。 此帐户不被安全子系统识别,因此您不能在对LookupAccountName函数的调用中指定其名称。 它在本地计算机上拥有丰富的权限,并充当networking上的计算机。 它的标记包括NT AUTHORITY \ SYSTEM和BUILTIN \ Administrators SID ; 这些帐户可以访问大多数系统对象。 所有语言环境中的帐户名称都是。\ LocalSystem。 名称LocalSystem或ComputerName \ LocalSystem也可以使用。 此帐户没有密码。 如果在对CreateService函数的调用中指定LocalSystem帐户,则您提供的任何密码信息都将被忽略 现在,在安装了MS SQL Server 2008 R2 x86试用版(Developer Preview)的Windows XP Pro SP3(工作组的一部分)上查看可用的帐户: Windows资源pipe理器目录右键 – >属性 – >安全选项卡 – > btn“添加…” – > btn“高级…” – > […]

交互命令提示符为NETWORK SERVICE

如何打开运行为NETWORK SERVICE的交互式应用程序(如cmd.exe或Windows资源pipe理器)? SYSTEM帐户有办法做到这一点,但networking服务被certificate是一个挑战。 我需要这个在Windows 7上工作,但也会对其他Windows版本的解决scheme感兴趣。

Linux中的Windows命名pipe道支持

我正在研究一个需要使用命名pipe道的传统Windows应用程序和运行在Linux服务器上的新服务之间进行进程间通信的项目。 Windows应用程序无法更改。 有谁知道是否有一个支持Windows命名pipe道的Linux库? 或者甚至更好,任何人都可以推荐一个他们用于这个目的的图书馆?

以编程方式安装NDIS筛选驱动程序

我正在尝试编写以编程方式安装NDIS 6.0轻量级筛选器驱动程序的C ++代码。 在审查了WinDDK,在线示例和MSDN文档后,我最终得到了下面的代码示例。 (为了清楚起见,error handling被跳过)问题是INetCfgClassSetup :: Install总是返回错误0x8004a024。 (我找不到头文件中的错误代码。) 使用相同的.inf文件手动安装驱动程序就可以。 WinDDK的Bindview示例安装驱动程序就好,只要它调用INetCfgClassSetup :: SelectAndInstall的path即可。 使用INetCfgClassSetup :: Install的替代path不起作用。 内核debugging在我的机器上启用,所以不需要驱动程序签名。 下面的代码有什么问题吗? 谢谢。 …. isCopied = SetupCopyOEMInfA(pathToInf, // path to inf file pathToBin, // dir containing driver binary SPOST_PATH, 0, DestinationInfFileName, 256, NULL, NULL); …. INetCfg *pnc = NULL; INetCfgClassSetup *pncClassSetup = NULL; HRESULT hr; OBO_TOKEN OboToken; …. hr […]

batch file遍历本地networking服务器上的文件

我试图打开存储在本地networking服务器上的这个批处理代码的各种文件: for /f "tokens=*" %%G in ('dir /b /a:d "\\server\directory\*"') do %%G\setup.xml 但由于dir \\server\directory不起作用,所以不会那段代码。 我怎么能做到这一点? 先谢谢你

'inet_pton':找不到标识符

我试图在我的程序中包含下面的代码,但会出现错误('inet_pton':标识符未find)。 // IPv4: struct sockaddr_in ip4addr; int s; ip4addr.sin_family = AF_INET; ip4addr.sin_port = htons(3490); inet_pton(AF_INET, "10.0.0.1", &ip4addr.sin_addr); s = socket(PF_INET, SOCK_STREAM, 0); bind(s, (struct sockaddr*)&ip4addr, sizeof ip4addr); 产量 error C3861: 'inet_pton': identifier not found 包括标题 #include <stdio.h> #include <stdlib.h> #include "udpDefine.h" #include <windows.h> 任何帮助可能会错过一些标题或库。

快速replaceWin32_NetworkAdapter WMI类获取本地计算机的MAC地址

TL;这个问题的DR版本:WMI Win32_NetworkAdapter类包含我需要的信息,但速度太慢。 什么是获取Windows上的MACAddress,ConfigManagerErrorCode和PNPDeviceID列信息的更快速的方法? 我需要检索附加networking适配器的信息,以便我可以获取MAC地址来唯一标识本地Microsoft Windows计算机。 WMI Win32_NetworkAdapter类似乎有我正在寻找的信息。 MACAddress,ConfigManagerErrorCode和PNPDeviceID列是我真正需要的唯一的: MAC地址:MAC地址(此操作的目标) ConfigManagerErrorCode:允许我确定适配器是否已启用并正在运行。 (如果它被禁用,那么我应该使用以前由我的应用程序caching的MAC地址,如果可用的话)。 PNPDeviceID:通过检查前缀“PCI”(可能还有其他接口,如有必要),我可以过滤出非物理适配器,其中有几个在我的Windows 7盒子上(包括虚拟适配器,如VMware / VirtualBox) 。 我的计划是使用PNPDeviceID过滤非物理设备。 然后,我将使用任何剩余表项上的MACAddress列(将地址保存到caching中)。 当设备被禁用(可能由非零ConfigManagerErrorCode指示),MACAddress为空时,我可以从我的caching中为该设备使用以前看到的MAC地址。 你可以在我的Windows 7电脑上看到这个表格的内容。 你可以看到里面有很多垃圾,但是只有一个带有“PCI”PNPDeviceID的条目。 wmic:root\cli>NIC GET Caption, ConfigManagerErrorCode, MACAddress, PNPDeviceID Caption ConfigManagerErrorCode MACAddress PNPDeviceID [00000000] WAN Miniport (SSTP) 0 ROOT\MS_SSTPMINIPORT\0000 [00000001] WAN Miniport (IKEv2) 0 ROOT\MS_AGILEVPNMINIPORT\0000 [00000002] WAN Miniport (L2TP) 0 ROOT\MS_L2TPMINIPORT\0000 [00000003] WAN Miniport (PPTP) 0 […]

Windows中用户configuration文件的唯一标识符

对于客户端/服务器应用程序,我需要集中存储通常进入用户configuration文件目录的部分configuration信息。 客户端应用程序在首次使用时将具有GUID的文件或registry项写入当前configuration文件。 此GUID随后将用作服务器上configuration数据库中的一个键。 现在我想知道如果Windows用户configuration文件已经有我可以使用的唯一标识符,而不是生成我自己的GUID。 用户名将不起作用,因为用户可能有多个configuration文件。 将它与计算机名称组合将不起作用,因为可能存在漫游configuration文件。 更新: 我只是在同一个域中的两台计算机上的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList查看SID。 漫游未启用,因此我的用户帐户在每台计算机上都有单独的configuration文件。 两个configuration文件都列出了相同的SID。 这意味着我必须继续生成我自己的GUID。

使Windows只能运行一个可见的程序给用户

所以我一直被指责为一个小公司只能访问一个网站的所有计算机的任务,有点像一个网站。 在玩了很多白名单网页过滤软件之后,并没有发现公司预算中的任何东西都是他们想要的。 (阻止用户访问除IE以外的所有程序,而IE只能访问一个域)我不是世界上最伟大的程序员,但我想我可以把一个非常简单的C#Web浏览器放在一起,只允许访问特定的域,使用户使用它。 问题在于C#依靠Windows中存在的其他东西正常工作。 如果可以设置一台Windows机器,这样当用户login时,所有的Windowsfunction都是隐藏的,但仍然在后台运行,并且一个特定的程序正在运行,那么这个C#web浏览器就会从右侧的域开始,这真的是用户可以做的所有事情。 有谁知道一种方法来做到这一点? 其他解决scheme,我的问题将不胜感激。 我宁愿在个别机器上使用特定用户的解决scheme,而不是networkingfilter或更高级别的解决scheme。 这样我就可以访问完整的networking和计算机,因为用户只需访问邻近办公室提供的许多无线networking之一即可。 噢,有些机器是Windows 7,而其他机器则是运行XP。