WMI-Informationen mit C# auslesen
Ich brauchte für den MAC-Switcher eine einfache Möglichkeit den Namen der Netzwerkverbindungen wie er in der Systemsteuerung angezeigt wird auszulesen. Mit Hilfe von WMI ist dies unglaublich einfach.
- Zunächst muss man wissen was man sucht. Was WMI alles zur Verfügung stellt kann man hier in der msdn nachlesen.
- Dann baut man einen string zusammen der die Form einer SQL-Query hat.
- Als nächstes benutzt man einen ManagementObjectSearcher um die Daten zu suchen. Dieser gibt eine Collection mit den gefundenen ManagementObject-Objekten zurück. Über diese kann man mit dem Namen gewünschten Eigenschaft zugreifen.
Hier ein Beispiel um den Namen, die ID und die MAC-Adresse aller Netzwerkkarten (virtuell oder nicht) in einer MessageBox anzeigen zu lassen:
string query = "SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionID IS NOT null"; ManagementObjectSearcher sucher = new ManagementObjectSearcher(query); string s = ""; foreach (ManagementObject m in sucher.Get()) { // NetConnectionID Name der Karte wie in der Systemsteuerung // DeviceID ID HardwareID wie in der Registry s += m["NetConnectionID"] + " ID " + m["DeviceID"] + " MAC " + m["MACAddress"] + "\n"; } MessageBox.Show(s);


