首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

SetAdapterIpAddress的有关问题

2012-03-29 
SetAdapterIpAddress的问题?小弟最近用个函数总是不成功SetAdapterIpAddress,目的是更改Ip子网掩码等信息,

SetAdapterIpAddress的问题?
小弟最近用个函数总是不成功SetAdapterIpAddress,目的是更改Ip子网掩码等信息,代码如下:

C/C++ code
typedef 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 );

热点排行