2012-03-03 142 views
3

我想使用c#訪問計算機的mac地址。我已經使用下面的代碼來訪問mac地址,但是在這個代碼中存在一些問題。獲取計算機的MAC地址

代碼1

foreach(NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) 
{ 
    if(nic.OperationalStatus == OperationalStatus.Up) 
    { 
     Console.WriteLine(nic.GetPhysicalAddress().ToString()); 
     checkMAC = nic.GetPhysicalAddress().ToString(); 
     break; 
    } 
} 

代碼2

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 
     { 
      if ((bool)mo["IPEnabled"] == true) MACAddress = mo["MacAddress"].ToString(); 
     } 
     mo.Dispose(); 
    } 

    MACAddress = MACAddress.Replace(":", ""); 

在當我們從網絡連接斷開,那麼它將返回null MAC地址第一個代碼。第二個代碼在網絡適配器連接ID斷開連接時返回MAC地址但是,當我們將網絡連接分開或刪除計算機的IP地址時,它將返回空MAC地址。

如何獲取禁用網絡連接時的MAC地址,沒有IP地址分配給PC或網絡連接斷開連接?

回答

4

當您禁用網絡適配器時,根本無法訪問它 - 就好像它沒有安裝,這就是您沒有看到MAC地址的原因。

編輯:說明:

MAC地址屬於網絡適配器。如果您有3個適配器,則您有3個MAC地址。如果您沒有適配器,則沒有MAC地址。

+0

mac地址是我們自己的計算機地址那麼網絡適配器和mac地址的連接是什麼 – user847455 2012-03-03 08:46:44

+0

我加了一個解釋。 – zmbq 2012-03-03 09:48:49

+0

正確。這就是禁用界面意味着,應用程序將無法再看到它。 [文檔](http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkinterface.getallnetworkinterfaces.aspx)清楚地說明了這一點。總之,這個問題所要求的是不可能的。 – 2012-03-03 10:00:12

相關問題