2010-06-30 155 views
10

当.NET中禁用网络适配器时,有什么方法可以检索MAC地址?网络适配器禁用时获取MAC地址?

由于提前,

+1

你可以发布你用在适配器启用了代码,然后提到在接听电话时,适配器被禁用不工作? – 2010-06-30 05:40:44

回答

7

无法获取被禁用的适配器的MAC地址:这是因为获取MAC地址需要查询驱动程序,并且未加载禁用的适配器的驱动程序(source)。

但是,您可以获取当前未连接的适配器的MAC地址。

这里的WMI路由不好,因为它显示的MAC地址为空,表示没有连接的适配器。好消息是,NetworkInterface.GetAllNetworkInterfaces()路线工作得很好:

// using System.Net.NetworkInformation; 
var nics = NetworkInterface.GetAllNetworkInterfaces(); 

// pick your NIC! 
var selectedNic = nics.First(); 

var macAddress = selectedNic.GetPhysicalAddress().ToString(); 
1

您可以使用WMI:

public static string GetMACAddress() 
    { 
     ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
     ManagementObjectCollection moc = mc.GetInstances(); 
     string MACAddress=String.Empty; 
     foreach(ManagementObject mo in moc) 
     { 
      if(MACAddress==String.Empty) // only return MAC Address from first card 
      { 
       MACAddress= mo["MacAddress"].ToString() ; 
      } 
      mo.Dispose(); 
     } 

     return MACAddress; 
    } 
+4

当禁用NIC时,这不适用于Windows 7。任何理由? – 2011-07-26 05:43:08

+1

它在Windows XP上也不起作用。我认为这个答案被标记为答案太快。 – bitbonk 2011-09-19 15:44:25

+0

网络适配器禁用时不起作用。 – tmighty 2013-05-22 07:00:43