2010-06-30 156 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