如何枚举到所有的网卡

导读:
  
http://www.vckbase.com/document/viewdoc/?id=851  
   
  1.2   读取注册表取得适配器名称  
   
  在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);  

本文转自
http://topic.csdn.net/t/20050125/17/3753106.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值