c# 使用WMI获取网卡解决思路
c# 使用WMI获取网卡
c# 使用WMI获取网卡信息.
第一次研究wmi一堆东西看着迷糊.现在只做到
或者
拿到网卡信息。但这样并不符合需求。
前者只能拿到已启用的网卡(因为无线网卡可能是未启用状态,后期还要加上启动的功能),后者则拿到太多的网卡信息(显示了14个。。。。。)
想拿到如同控制面板-网络连接 (更改适配器) 中那样的数量。
我应该设置什么条件合适?
------解决方案--------------------
Win32_NetworkAdapter
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
------解决方案--------------------
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("PnpInstanceID", "").ToString();
int fMediaSubType = Convert.ToInt32(rk.GetValue("MediaSubType", 0));
if (fPnpInstanceID.Length > 3 &&
fPnpInstanceID.Substring(0, 3) == "PCI")
fCardType = "物理网卡";
else if (fMediaSubType == 1)
fCardType = "虚拟网卡";
else if (fMediaSubType == 2)
fCardType = "无线网卡";
}
#endregion
#region " 网卡信息 "
Console.WriteLine("-----------------------------------------------------------");