日期:2014-05-17  浏览次数:21127 次

c# 使用WMI获取网卡
本帖最后由 mdjs198 于 2013-11-05 15:38:43 编辑
c# 使用WMI获取网卡信息.
第一次研究wmi一堆东西看着迷糊.现在只做到
   ObjectQuery oq = new ObjectQuery("select * from Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'");

或者 
   ObjectQuery oq = new ObjectQuery("select * from Win32_NetworkAdapterConfiguration ");

拿到网卡信息。但这样并不符合需求。
前者只能拿到已启用的网卡(因为无线网卡可能是未启用状态,后期还要加上启动的功能),后者则拿到太多的网卡信息(显示了14个。。。。。)

想拿到如同控制面板-网络连接 (更改适配器) 中那样的数量。
我应该设置什么条件合适?
网卡 WMI c#

------解决方案--------------------
Win32_NetworkAdapter
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
------解决方案--------------------
public static void ShowNetworkInterfaceMessage()  
        {  
            NetworkInterface[] fNetworkInterfaces = NetworkInterface.GetAllNetworkInterfaces();  
            foreach (NetworkInterface adapter in fNetworkInterfaces)  
            {  
                #region " 网卡类型 "  
                string fCardType = "未知网卡";  
                string fRegistryKey = "SYSTEM//CurrentControlSet//Control//Network//{4D36E972-E325-11CE-BFC1-08002BE10318}//" + adapter.Id + "//Connection";  
                RegistryKey rk = Registry.LocalMachine.OpenSubKey(fRegistryKey, false);  
                if (rk != null)  
                {  
                    // 区分 PnpInstanceID   
                    // 如果前面有 PCI 就是本机的真实网卡  
                    // MediaSubType 为 01 则是常见网卡,02为无线网卡。  
                    string fPnpInstanceID = rk.GetValue("PnpIn