.NET
VB.NET: Lokale IP Adresse mit WMI bestimmen
Posted on .Heute möchte ich euch zeigen, wie ihr mithilfe der WMI eure lokale IP Adresse bestimmen könnt. Diese Funktion fehlt leider noch in dem Aktuellem Framework. (Zum Thema WMI werde ich noch detailiertere Artikel schreiben!)
Fangen wir an. Das das nur ein kleines Demoprojekt ist, erstellen wir ein gewöhnliches Windows Forms Projekt. Die leere Form die es und gleich liefert ist auch schon alles was wir brauchen! Doppelklicken wir auf die Form um zum Code zu gelangen!
Ich möchte erstmal etwas über die WMI (Windows Management Instrumentation) sagen. Die WMI ist soetwas wie ein große Datenbank von allen Geräten, die in einem Computer verbaut sind, inklusive aller Infos wie Hersteller, Ports etc. Aber nicht nur das, man kann über die WMI soziemlich alle Einstellungen des Computers ändern! Also vorsicht dort kann man ziemlich viel Mist bauen!
Aber zurück zur Lokalen IP. Wie sovieles ist die Lokale IP auch in der WMI gespeichert, diese kann man auslesen, oder auch neu einstellen (was uns jetzt aber nicht interessiert!). Aber wo ist sie?
Imports System.Management Public Class Form1 Function ShowIP() As String Dim query As _ ManagementObjectSearcher = New ManagementObjectSearcher_ ("SELECT * FROM Win32_NetworkAdapterConfiguration_ WHERE IPEnabled = True") Dim queryCollection As ManagementObjectCollection = query.Get() Dim IPAdress(1) As String For Each mo As ManagementObject In queryCollection IPAdress = mo.GetPropertyValue("IPAddress") MessageBox.Show(IPAdress(0)) Next End Function End ClassSo sieht unsere Funktion aus! Diese Funktion muss nurnoch im Form1_Load Ereignis aufgerufen werden. Überschaubar oder? Und auch überhaupt nicht kompliziert 🙂 Wie man sieht kann man die WMI ähnlich wie eine SQL Datenbank ansteuern. Man erstellt einen query vom Typ ManagementObjectSearcher dem man über seinen Konstruktor den SQL-Query zuweist! In diesem Fall möchten wir die Win32_NetworkAdapterConfiguration durchsuchen, macht ja auch Sinn wenn man die IP haben möchte oder? Undzwar picken wir uns nur die Netzwerkkarten raus, die auch aktiv sind und somit auch eine IP zugewiesen bekommen haben. Das sind nämlich die, die die Eigenschaft „IPEnabled“ aktiviert haben!
Da wir als Antwort auf diesen Query mehr als nur einen Eintrag bekommen könnten müssen wir für das Ergebnis eine Collection anlegen. In diesem Fall eine ManagementObjectCollection. Diese Collection kann alle Management Objekte Speichern! Dieser weisen wir unseren Such-Query zu.
Die IP Adresse ist in jedem Netzwerkadapter in einem Ein-Dimensionalen Array gespeichert, weswegen wir eine entsprechende Variable anlegen, hier „IPAdress„!
Nun sprechen wir jede Netzwerkkarte an, die wir in unserer queryCollection haben und fragen deren IP Adresse ab. Diese Eigenschaft heißt, Übberraschug, „IPAdress„. Das ManagementObject bietet und glücklicherweise die Funktion „GetPropertyValue“ mit der wir jede Eigenschaft auslesen können, mit deren Hilfe können wir den IPAdress Array aus der WMI in unsere IPAdress Variable kopieren.
In diesem Array befindet sich die IPAdresse in dem ersten Feld. Dieses geben wir über die MessageBox aus!
Das wars auch schon nun kennen wir die lokalen IP Adressen von allen aktiven Netzwerkkarten! Zu dem Thema WMI werde ich noch öfter schreiben, unter anderem wie man in die WMI gelangt und sich mal umschauen kann und wie man die gespeicherten Informationen manipulieren kann!
Sebastian Gross
http://www.bigbasti.comSebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.
Author Bulli
Posted at 20:09 9. Februar 2010.
klasse Beschreibung !!! Danke schön. Ist sie Ausgabe von alternativen IP-Adressen des LAN-Adapters auch möglich ?
Gruß
Bulli
Author admin
Posted at 21:56 9. Februar 2010.
Hallo Bulli, was genau meinst du mit Alternativen Adressen?
Author Bulli
Posted at 19:41 12. Februar 2010.
Einer LAN-Schnittstelle kann ich unter der erweiterten TCP/IP-Einstellungen weitere IP-Adressen hinzufügen.
Author admin
Posted at 22:26 21. März 2010.
Hallo Bulli, habe das hier irgendwie aus den Augen verloren. Wir lesen in diesem Beispiel ja einen IPAdress Array aus. unter Umständen können in diesem Array ja auch die anderen Adressen stehen, die du suchst. Wie gesagt ist das nur eine Vermutung, da ich noch nicht mit alternativen IP Adressen zu tun hatte!