WEB开发网
开发学院软件开发VC 不重起Windows直接更改IP地址 阅读

不重起Windows直接更改IP地址

 2006-07-21 11:10:54 来源:WEB开发网   
核心提示: 在Windows2000中可以通过遍历 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\000n\ (n是从0开始编号的数字)所有接口, 在Wi

在Windows2000中可以通过遍历 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\000n\ (n是从0开始编号的数字)所有接口, 在Windows NT中可以读取HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards中的信息,下面以Windows2000为例:

HKEY hKey, hSubKey, hNdiIntKey;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
      "System\\CurrentControlSet\\Control\\Class\\{4d36e972-e325-11ce-bfc1-08002be10318}",
      0,
      KEY_READ,
      &hKey) != ERROR_SUCCESS)
  return FALSE;
DWORD dwIndex = 0;
DWORD dwBufSize = 256;
DWORD dwDataType;
char szSubKey[256];
unsigned char szData[256];
while(RegEnumKeyEx(hKey, dwIndex++, szSubKey, &dwBufSize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
{
  if(RegOpenKeyEx(hKey, szSubKey, 0, KEY_READ, &hSubKey) == ERROR_SUCCESS)
  {    
    if(RegOpenKeyEx(hSubKey, "Ndi\\Interfaces", 0, KEY_READ, &hNdiIntKey) == ERROR_SUCCESS)
    {
      dwBufSize = 256;
      if(RegQueryValueEx(hNdiIntKey, "LowerRange", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)
      {
        if(strcmp((char*)szData, "ethernet") == 0)    //  判断是不是以太网卡
        {
          dwBufSize = 256;
          if(RegQueryValueEx(hSubKey, "DriverDesc", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)
          {
            // szData 中便是适配器详细描述
            dwBufSize = 256;
            if(RegQueryValueEx(hSubKey, "NetCfgInstanceID", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)
            {
              // szData 中便是适配器名称
            }
          }
        }
      }
      RegCloseKey(hNdiIntKey);
    }
    RegCloseKey(hSubKey);
  }
  dwBufSize = 256;
}  /* end of while */
    
RegCloseKey(hKey);

二、将IP信息写入注册表

Tags:Windows 直接 更改

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接