C#获取本机IP且过滤非真实网卡(如虚拟机网卡)

来源:互联网 发布:提取声音的软件 编辑:程序博客网 时间:2024/05/22 10:39

参考了网上的文章,具体地址不记得了。

下面的方法可以过滤掉虚拟机的网卡等无效网卡,进而只留下真实的网卡。

下面的代码有些问题,如果用户修改了虚拟机网络名称,判断就会出错,所以判断的名字不是很合适,应该用description判断

[csharp] view plain copy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Management;  
  6.   
  7. namespace _15获取本机IP_过滤非真实网卡_  
  8. {  
  9.     class Program  
  10.     {  
  11.         static void Main(string[] args)  
  12.         {  
  13.             List<string> listIP = new List<string>();  
  14.             ManagementClass mcNetworkAdapterConfig = new ManagementClass("Win32_NetworkAdapterConfiguration");  
  15.             ManagementObjectCollection moc_NetworkAdapterConfig = mcNetworkAdapterConfig.GetInstances();  
  16.             foreach (ManagementObject mo in moc_NetworkAdapterConfig)  
  17.             {  
  18.                 string mServiceName = mo["ServiceName"as string;  
  19.   
  20.                 //过滤非真实的网卡  
  21.                 if (!(bool)mo["IPEnabled"])  
  22.                 { continue; }  
  23.                 if (mServiceName.ToLower().Contains("vmnetadapter"
  24.                  ||mServiceName.ToLower().Contains("vmware"
  25.                  || mServiceName.ToLower().Contains("ppoe")  
  26.                  || mServiceName.ToLower().Contains("bthpan")  
  27.                  || mServiceName.ToLower().Contains("tapvpn")  
  28.                  || mServiceName.ToLower().Contains("ndisip")  
  29.                  || mServiceName.ToLower().Contains("sinforvnic"))  
  30.                 { continue; }  
  31.   
  32.   
  33.                 //bool mDHCPEnabled = (bool)mo["IPEnabled"];//是否开启了DHCP  
  34.                 //string mCaption = mo["Caption"] as string;  
  35.                 //string mMACAddress = mo["MACAddress"] as string;  
  36.                 string[] mIPAddress = mo["IPAddress"as string[];  
  37.                 //string[] mIPSubnet = mo["IPSubnet"] as string[];  
  38.                 //string[] mDefaultIPGateway = mo["DefaultIPGateway"] as string[];  
  39.                 //string[] mDNSServerSearchOrder = mo["DNSServerSearchOrder"] as string[];  
  40.   
  41.                 //Console.WriteLine(mDHCPEnabled);  
  42.                 //Console.WriteLine(mCaption);  
  43.                 //Console.WriteLine(mMACAddress);  
  44.                 //PrintArray(mIPAddress);  
  45.                 //PrintArray(mIPSubnet);  
  46.                 //PrintArray(mDefaultIPGateway);  
  47.                 //PrintArray(mDNSServerSearchOrder);  
  48.   
  49.                 if (mIPAddress != null)  
  50.                 {  
  51.   
  52.                     foreach (string ip in mIPAddress)  
  53.                     {  
  54.                         if (ip != "0.0.0.0")  
  55.                         {  
  56.                             listIP.Add(ip);  
  57.                         }  
  58.                     }  
  59.                 }  
  60.                 mo.Dispose();  
  61.             }  
  62.   
  63.             PrintList(listIP);  
  64.   
  65.             Console.WriteLine("-- -- The End -- --");  
  66.   
  67.             Console.ReadKey();  
  68.         }  
  69.   
  70.         static void PrintList<T>(List<T> list)   
  71.         {  
  72.             foreach(T item in list)  
  73.             {  
  74.                 Console.WriteLine(item);  
  75.             }  
  76.         }  
  77.   
  78.         static void PrintArray<T>(T[] list)  
  79.         {  
  80.             foreach (T item in list)  
  81.             {  
  82.                 Console.WriteLine(item);  
  83.             }  
  84.             Console.WriteLine();  
  85.         }  
  86.     }  
  87. }  

转自:http://blog.csdn.net/frombegintoend/article/details/9228623

0 0