SetAdapterIpAddress的问题?小弟最近用个函数总是不成功SetAdapterIpAddress,目的是更改Ip子网掩码等信息,
SetAdapterIpAddress的问题?
小弟最近用个函数总是不成功SetAdapterIpAddress,目的是更改Ip子网掩码等信息,代码如下:
C/C++ codetypedef DWORD (WINAPI *_SetAdapterIpAddress )( char *szAdapterGUID, DWORD dwDHCP,DWORD dwIP,DWORD dwMask,DWORD dwGateway );HINSTANCE lib = (HINSTANCE) LoadLibrary(_T("iphlpapi.dll") ); _SetAdapterIpAddress SetAdapterIpAddress = (_SetAdapterIpAddress) GetProcAddress( lib,"SetAdapterIpAddress" ); DWORD err=SetAdapterIpAddress("{FE6B6CFE-1A86-47E2-B581-21EF4D60C8A6}",0,inet_addr("192.168.1.2"), inet_addr("255.255.255.0"),inet_addr("192.168.1.1"));
编译器vc6.0,系统win,编译无错无警告。
但是调试获得函数返回值err为87.
想请教下原因,或者纠正使用,或者提供正确的方法。
感激不尽!
[解决办法]87: 参数不正确。
[解决办法]用这个API改完了,是不是还要修改注册表下相应的键值呀,你试一下:
char szInstKey[MAX_PATH] = "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\";
lstrcat(szInstKey, "{FE6B6CFE-1A86-47E2-B581-21EF4D60C8A6}");
if (ERROR_SUCCESS == RegOpenKey(HKEY_LOCAL_MACHINE,szInstKey,&hInst))
{
BYTE* lpIP = "192.168.1.2";
BYTE* lpMask = "255.255.255.0";
BYTE* lpGateway = "192.168.1.1";
DWORD dValue = 0;
RegSetValueEx(hInst,"IPAddress",NULL,REG_MULTI_SZ,lpIP,strlen(lpIP));
RegSetValueEx(hInst,"SubnetMask",NULL,REG_MULTI_SZ,lpMask,strlen(lpMask));
RegSetValueEx(hInst,"DefaultGateway",NULL,REG_MULTI_SZ,lpGateway,strlen(lpGateway));
RegSetValueEx(hInst,"EnableDHCP",NULL,REG_DWORD,(LPBYTE)&dValue,sizeof(dValue));
RegCloseKey(hInst);
}
[解决办法]http://www.vckbase.com/document/viewdoc/?id=851
[解决办法]typedef DWORD (WINAPI *_SetAdapterIpAddress )( char *szAdapterGUID,
DWORD dwDHCP,char* dwIP,char* dwMask,char* dwGateway );