vc 注册表改网络设置立即生效

Ip、子网掩码、默认网关、首选DNS服务器相关信息在注册表之中,改变注册表的值,然后通知所以应用程序即可,代码如下: 

未测试

BOOL   SetIP(LPCTSTR   lpszAdapterName,   int   nIndex,   LPCTSTR   pIPAddress,   LPCTSTR   pNetMask,   LPCTSTR   pNetGate) 
{ 
	HKEY   hKey; 
	CString   strKeyName   =   "SYSTEM//CurrentControlSet//Services//Tcpip//Parameters//Interfaces// "; 
	strKeyName   +=   lpszAdapterName; 
	if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
		strKeyName, 
		0, 
		KEY_WRITE, 
		&hKey)   !=   ERROR_SUCCESS) 
		return   FALSE; 

	char   mszIPAddress[100]; 
	char   mszNetMask[100]; 
	char   mszNetGate[100]; 

	strncpy(mszIPAddress,   pIPAddress,   98); 
	strncpy(mszNetMask,   pNetMask,   98); 
	strncpy(mszNetGate,   pNetGate,   98); 

	int   nIP,   nMask,   nGate; 

	nIP   =   strlen(mszIPAddress); 
	nMask   =   strlen(mszNetMask); 
	nGate   =   strlen(mszNetGate); 

	*(mszIPAddress   +   nIP   +   1)   =   0x00; 
	nIP   +=   2; 

	*(mszNetMask   +   nMask   +   1)   =   0x00; 
	nMask   +=   2; 

	*(mszNetGate   +   nGate   +   1)   =   0x00; 
	nGate   +=   2; 

	RegSetValueEx(hKey,   "IPAddress ",   0,   REG_MULTI_SZ,   (unsigned   char*)mszIPAddress,   nIP); 
	RegSetValueEx(hKey,   "SubnetMask ",   0,   REG_MULTI_SZ,   (unsigned   char*)mszNetMask,   nMask); 
	RegSetValueEx(hKey,   "DefaultGateway ",   0,   REG_MULTI_SZ,   (unsigned   char*)mszNetGate,   nGate); 

	RegCloseKey(hKey); 

	//通知IP地址改变 
	BOOL bResult   =   FALSE; 
	HINSTANCE hDhcpDll; 
	DHCPNOTIFYPROC pDhcpNotifyProc; 
	WCHAR   wcAdapterName[256]; 

	MultiByteToWideChar(CP_ACP,   0,   lpszAdapterName,   -1,   wcAdapterName,256); 

	if((hDhcpDll   =   LoadLibrary( "dhcpcsvc "))   ==   NULL) 
		return   FALSE; 

	if((pDhcpNotifyProc   =   (DHCPNOTIFYPROC)GetProcAddress(hDhcpDll,   "DhcpNotifyConfigChange "))   !=   NULL) 
		if((pDhcpNotifyProc)(NULL,   wcAdapterName,   TRUE,   nIndex,   inet_addr(pIPAddress),   inet_addr(pNetMask),   0)   ==   ERROR_SUCCESS) 
			bResult   =   TRUE; 

	FreeLibrary(hDhcpDll); 

	return   TRUE; 
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值