2013-04-03 18 views
9

Czy istnieje sposób na uzyskanie adresu mac komputera, gdy w C# nie ma połączenia internetowego? Mogę dostać, gdy mam połączenie, ale nie mogę uzyskać, gdy jestem offline. Ale mocno potrzebuję adresu mac do mojej pracy.C# Pobierz adres MAC komputera "OFFLINE"

Mój kod online;

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

można po prostu usunąć 'gdzie nic.OperationalStatus = = Linia OperationalStatus.Up'? – Pondidum

+0

W trybie online, adres mac; 4CEB428D5072 W trybie offline adres mac 4CEB428D5073. Czemu? –

Odpowiedz

24

Od 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; 
} 

Od System.Net nazw:

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; 
} 

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

+0

Czy wymagane są właściwości 'IPInterfaceProperties właściwości = adapter.GetIPProperties(); – Joel

+0

@Joel Nie ta linia nie jest wymagana w oparciu o testy Po prostu uruchomiłem moją skrzynkę dev. Zaktualizowana odpowiedź odzwierciedlająca moje testy. – jordanhill123