Montag, 28. Juni 2010

Physikalische Adresse (MAC - Adresse) ermitteln

Im heutigen Post möchte ich euch zeigen, wie man die MAC - Adresse eines Computers, auch seine physikalische Adresse genannt, mit C# ausliest.
Die MAC - Adresse ist die physikalische Hardware - Adresse des Netzwerkadapters, mit dem dieser eindeutig auf der ganzen Welt identifiziert werden kann, sie wird nur einmal vergeben (sie kann aber gefälscht bzw. geändert werden).
Hat euer Computer also eine LAN - Karte und wählt sich mit dieser ins Internet ein, kann euer Computer über die MAC - Adresse des Netzwerkadapters im Internet eindeutig identifiziert werden.
Mit der Programmiersprache C# .Net kann man die MAC - Adresse einerseits über die Klasse System.Management.ManagementClass auslesen, doch der Code hierzu ist recht umständlich.
Es gibt einen viel einfacheren einzeiligen Aufruf, der zum gleichen Ergebnis führt.
Der folgende Code stellt eine C# - Konsolenanwendung dar, die über alle Netzwerkadapter des PCs iteriert und dessen jeweilige Beschreibungen (Namen) und zugehörige MAC - Adressen ausgibt (using System.Net.NetworkInformation; muss eingebunden sein):

            NetworkInterface[] NetworkAdapters = NetworkInterface.GetAllNetworkInterfaces();

            foreach (NetworkInterface adapter in NetworkAdapters)
            {
                Console.WriteLine(adapter.Description);
                Console.WriteLine("MAC - Adresse: " + adapter.GetPhysicalAddress().ToString());
                Console.WriteLine();
            }

Kommentare:

  1. Es ist immer schön, wenn das erste Resultat der benutzten Such-Maschine (ie. Google) auch gleich die gewünschte Information enthält.

    -Danke

    AntwortenLöschen
  2. und wie stelle ich das an wenn ich einen Bestimmten Rechner im Netzwerk auslesen möchte? Also wenn ich ein Skript schreibe und einen Rechner im Netwerk per name die MAC Adresse haben will?!

    AntwortenLöschen
  3. Vielen Dank an Oliver für den Tipp.

    @Anonym
    Falls es keine C#-implementierte Lösung gibt...
    Erst "ping" dann "arp" zeigt die Mac-Adressen anderer Rechner an.
    ping rechnername
    arp -a
    Die Befehle kann man von C# ausführen lassen und die Ausgabe von "arp -a" auswerten.

    AntwortenLöschen
  4. Top!

    mit

    if(adapter.NetworkInterfaceType.ToString().Equals("Ethernet")){}

    filtert man Loopback, Tunnel etc heraus.

    AntwortenLöschen