2013-04-03 40 views
9

當c#中沒有Internet連接時,是否有任何方法可以獲取計算機的mac地址? 當我離線時,我能夠獲得連接但無法獲得。但強烈我需要我的工作的mac地址。C#獲取計算機的MAC地址「OFFLINE」

我的在線代碼;

var macAddr = 
     (from nic in NetworkInterface.GetAllNetworkInterfaces() 
     where nic.OperationalStatus == OperationalStatus.Up 
     select nic.GetPhysicalAddress().ToString()).FirstOrDefault(); 
+0

稍加修改可以只取出'那裏nic.OperationalStatus = = OperationalStatus.Up'行? – Pondidum

+0

在線時,mac地址; 4CEB428D5072脫機時,mac地址4CEB428D5073。爲什麼? –

回答

24

從WMI:

public static string GetMACAddress1() 
{ 
    ManagementObjectSearcher objMOS = new ManagementObjectSearcher("Select * FROM Win32_NetworkAdapterConfiguration"); 
    ManagementObjectCollection objMOC = objMOS.Get(); 
    string macAddress = String.Empty; 
    foreach (ManagementObject objMO in objMOC) 
    { 
     object tempMacAddrObj = objMO["MacAddress"]; 

     if (tempMacAddrObj == null) //Skip objects without a MACAddress 
     { 
      continue; 
     } 
     if (macAddress == String.Empty) // only return MAC Address from first card that has a MAC Address 
     { 
      macAddress = tempMacAddrObj.ToString();    
     } 
     objMO.Dispose(); 
    } 
    macAddress = macAddress.Replace(":", ""); 
    return macAddress; 
} 

從System.Net命名空間:

public static string GetMACAddress2() 
{ 
    NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); 
    String sMacAddress = string.Empty; 
    foreach (NetworkInterface adapter in nics) 
    { 
     if (sMacAddress == String.Empty)// only return MAC Address from first card 
     { 
      //IPInterfaceProperties properties = adapter.GetIPProperties(); Line is not required 
      sMacAddress = adapter.GetPhysicalAddress().ToString(); 
     } 
    } return sMacAddress; 
} 

How to get the MAC address of system - C-Sharp Corner

+0

行'IPInterfaceProperties屬性= adapter.GetIPProperties();'需要? – Joel

+0

@Joel沒有這條線不需要基於測試我剛剛在我的開發箱上運行。更新了答案以反映我的測試。 – jordanhill123

相關問題