零贰'Blog

零贰'Blog - 记录日常点点滴滴..........

VC Ip、子网掩码、默认网关、首选DNS服务器

学习

#####阅读原文

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; }