我想修改注册表IP相关信息后,不重启机器,让修改的IP等立即生效.
我把注册表里的IP,网关,掩码修改以后,用DhcpNotifyConfigChange通知立即生效,但是没有效果.
RegSetValueEx(hKey, "IPAddress",0,REG_MULTI_SZ,(unsigned char*)mszIPAddress, nIP);
RegSetValueEx(hKey, "SubnetMask",0,REG_MULTI_SZ,(unsigned char*)mszNetMask, nIP);
RegSetValueEx(hKey, "DefaultGateway",0,REG_MULTI_SZ,(unsigned char*)mszNetGate, nIP);
//RegSetValueEx(hKey, "NameServer",0,REG_MULTI_SZ,(unsigned char*)0, nIP); //第4句修改DNS
//通知IP变更
BOOL bResult = FALSE;
HINSTANCE hDhcpDll;
DHCPNOTIFYPROC pDhcpNotifyProc;
WCHAR wcAdapterName[256];
MultiByteToWideChar(CP_ACP, 0, strNameShipeiqi,-1, wcAdapterName, 256);
if ((hDhcpDll = LoadLibrary("dhcpcsvc")) == NULL)
return FALSE;
if ((pDhcpNotifyProc = (DHCPNOTIFYPROC)GetProcAddress(hDhcpDll, "DhcpNotifyConfigChange")) != NULL)
//{
// AfxMessageBox("加载成功");
//}
if((pDhcpNotifyProc)(NULL, wcAdapterName, TRUE, 0, inet_addr(strIP), inet_addr(strIPYanma), 1) ==
ERROR_SUCCESS)  //用这个函数通知的话,如果上面第4句也改,程序到这里会崩溃掉,但是IP却立即生效了.
{
bResult = TRUE;
AfxMessageBox("通知成功");
}
FreeLibrary(hDhcpDll);上面是修改IP,然后通知立即生效的代码.但是用了后没有效果,IP还是之前的.. 上面的第4句,修改DNS的? 要是把那句加上,
程序运行到通知那一句的时候就会崩掉..这个时候反而新IP有生效..这个是怎么回事?