启用networking附加function后,将自动configurationIP地址设置

我正在为Windows Vista和Visual Studio C ++开发一个应用程序,其中我必须分配静态IP地址到网卡并build立连接。 为此,我inputregistry中的IP值,并将“启用DHCP”值设置为0.然后,我需要禁用然后启用网卡才能使这些值生效。 为此,我在下面的代码中使用“INetConnectionManager”:

CoInitialize(0); typedef void (__stdcall * PNcFreeNetconProperties)(NETCON_PROPERTIES* pProps); HMODULE hmod = LoadLibrary(L"netshell.dll"); if (!hmod) return false; LPNcFreeNetconProperties NcFreeNetconProperties = (LPNcFreeNetconProperties)GetProcAddress(hmod, "NcFreeNetconProperties"); if (!NcFreeNetconProperties ) return false; INetConnectionManager * pMan = 0; HRESULT hres = CoCreateInstance(CLSID_ConnectionManager, 0, CLSCTX_ALL, __uuidof(INetConnectionManager), (void**)&pMan); if (SUCCEEDED(hres)) { IEnumNetConnection * pEnum = 0; hres = pMan->EnumConnections(NCME_DEFAULT, &pEnum); if (SUCCEEDED(hres)) { INetConnection * pCon = 0; ULONG count; bool done = false; while (pEnum->Next(1, &pCon, &count) == S_OK && !done) { NETCON_PROPERTIES * pProps = 0; hres = pCon->GetProperties(&pProps); if (SUCCEEDED(hres)) { if (wcscmp(pProps-pszwDeviceName, AdapterName) == 0) { if (bEnable) result = (pCon->Connect() == S_OK); else result = (pCon->Disconnect() == S_OK); done = true; } NcFreeNetconProperties(pProps); } pCon->Release(); } pEnum->Release(); } pMan->Release(); } FreeLibrary(hmod); CoUninitialize(); 

它禁用和启用网卡非常好, 但自动configuration的IPv4值正在设置,而不是在registry中的静态值。 这奇怪的适用于DHCP连接,但不适用于静态连接。

注:我甚至尝试过SetIfEntry,但无法禁用或启用网卡。

请build议我在做什么错或什么我失踪。

感谢致敬,

维纳亚克

Solutions Collecting From Web of "启用networking附加function后,将自动configurationIP地址设置"

在Windows VISTA和Win7上支持INetConnectionManager? 我已经实现了相同的代码,你在这里写的,但是当应用程序运行在非管理员登录时,我的访问被拒绝了。 因此,看起来像我们需要使用COM Moniker提升com对象。

问候IP_Telephony