window网络适配器信息获取

一、 适配器信息,例如IP,MAC,GATEWAY,DNS,DHCP SERVER等等,可以通过 struct IP_ADAPTER_INFO 获取,MSDN例子:
PIP_ADAPTER_INFO pAdapterInfo;
PIP_ADAPTER_INFO pAdapter 
=  NULL;
DWORD dwRetVal 
=   0 ;

pAdapterInfo 
=  (IP_ADAPTER_INFO  * ) malloc(  sizeof (IP_ADAPTER_INFO) );
ulOutBufLen 
=   sizeof (IP_ADAPTER_INFO);

//  Make an initial call to GetAdaptersInfo to get
//  the necessary size into the ulOutBufLen variable
if  (GetAdaptersInfo( pAdapterInfo,  & ulOutBufLen)  !=  ERROR_SUCCESS) {
  GlobalFree (pAdapterInfo);
  pAdapterInfo 
=  (IP_ADAPTER_INFO  * ) malloc (ulOutBufLen);
}

if  ((dwRetVal  =  GetAdaptersInfo( pAdapterInfo,  & ulOutBufLen))  ==  NO_ERROR) {
  pAdapter 
=  pAdapterInfo;
  
while  (pAdapter) {
    printf(
" \tAdapter Name: \t%s\n " , pAdapter -> AdapterName);
    printf(
" \tAdapter Desc: \t%s\n " , pAdapter -> Description);
    printf(
" \tAdapter Addr: \t%ld\n " , pAdapter -> Address);
    printf(
" \tIP Address: \t%s\n " , pAdapter -> IpAddressList.IpAddress.String);
    printf(
" \tIP Mask: \t%s\n " , pAdapter -> IpAddressList.IpMask.String);

    printf(
" \tGateway: \t%s\n " , pAdapter -> GatewayList.IpAddress.String);
    printf(
" \t***\n " );
    
if  (pAdapter -> DhcpEnabled) {
      printf(
" \tDHCP Enabled: Yes\n " );
      printf(
" \t\tDHCP Server: \t%s\n " , pAdapter -> DhcpServer.IpAddress.String);
      printf(
" \tLease Obtained: %ld\n " , pAdapter -> LeaseObtained);
    }
    
else
      printf(
" \tDHCP Enabled: No\n " );
    
    
if  (pAdapter -> HaveWins) {
      printf(
" \tHave Wins: Yes\n " );
      printf(
" \t\tPrimary Wins Server: \t%s\n " , pAdapter -> PrimaryWinsServer.IpAddress.String);
      printf(
" \t\tSecondary Wins Server: \t%s\n " , pAdapter -> SecondaryWinsServer.IpAddress.String);
    }
    
else
      printf(
" \tHave Wins: No\n " );
    pAdapter 
=  pAdapter -> Next;
  }
}
else  {
  printf(
" Call to GetAdaptersInfo failed.\n " );
}


二、网络连接名称等信息获取
   注册表位置(XP/WIN7下已经验证):HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\网络适配器名称\Connection\Name
   例如:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{0A033045-9AAC-4CEB-8394-6704E23D9B43}\Connection下可以查看到Name为“本地连接”
   HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{483C9FF8-503D-414B-B402-E4C1F1F568CB}\Connection    下可以查看到Name为“本地连接 2” 

   网络适配器名称可以通过IP_ADAPTER_INFO结构的 AdapterName 获取。

你可能感兴趣的:(window网络适配器信息获取)