2013-04-03 2 views
9

Есть ли способ получить MAC-адрес компьютера при отсутствии подключения к Интернету в C#? Я могу получить, когда у меня есть соединение, но не могу получить, когда я в сети. Но сильно мне нужен адрес 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' line? – 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 properties = adapter.GetIPProperties();' нужна? – Joel

+0

@Joel Нет, эта строка не требуется на основе тестирования. Я просто побежал в своем dev-блоке. Обновленный ответ, чтобы отразить мое тестирование. – jordanhill123