VB 5/6-Tipp 0607: MAC einer Netzwerkkarte per WMI auslesen
von Konrad Doblander
Beschreibung
WMI bietet viele Informationen über den PC. Leider wird diese Technologie erst seit Windows 2000 unterstützt. Dieses Beispiel zeigt, wie man mithilfe von WMI die MAC (Eindeutige Identifikation) einer Netzwerkkarte auslesen kann.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: keine | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Projekt1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Listen-Steuerelement "List1" Option Explicit Private Sub Form_Load() Dim MACs() As String Dim i As Long MACs = MACAddressWMI For i = 0 To UBound(MACs) If Len(MACs(i)) > 0 Then List1.AddItem MACs(i) Next i End Sub Public Function MACAddressWMI() As String() Dim WMIobj As Object Dim MACobj As Object Dim s() As String On Error Goto ErrOut ReDim s(0) Set WMIobj = GetObject("winmgmts:").ExecQuery("SELECT MACAddress FROM Win32_NetworkAdapter " & _ "WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))") For Each MACobj In WMIobj ReDim s(UBound(s) + 1) s(UBound(s)) = MACobj.MACAddress Next MACobj MACAddressWMI = s Exit Function ErrOut: MsgBox "Fehler! WMI ist nicht vorhanden" End Function '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Projekt1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB5 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB6 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 5 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Thomas Jansen am 18.10.2006 um 13:47
ReDim s(UBound(s) + 1)
Zumindest unter Excel-VBA muss noch der Zusatz PRESERVE dazu, sonst sind alle Einträge außer dem letzten leer. Wie das unter VB läuft, kann ich nicht sagen. Also:
ReDim Preserve s(UBound(s) + 1)
Kommentar von Harald am 11.10.2004 um 15:41
Egal wie viele Netzwerkkarte eingebaut sind, er wir immer nur eine in die Listbox angezeigt. Zum Beispiel wenn ein Rechner eine Netzwerkkarte ON Board hat wird immer diese angezeigt, die zusätzlich eingebaute wird nur dann angezeigt wenn die ON Board im BIOS deaktiviert wird.
Kommentar von am 16.09.2004 um 13:13
Hallo VBNewbie,
er bringt dir deshalb nur ein MAC Adresse weil das redim falsch ist. Da muss statt [b]redim[/b] [b]redim preserve [/b] stehen.
so sollte es funktionieren.
For Each MACobj In WMIobj
ReDim Preserve s(UBound(s) + 1)
s(UBound(s)) = MACobj.MACAddress
Next MACobj
Kommentar von am 16.09.2004 um 13:10
WMI funktioniert unter Win95/98 NT4.0 ebenfalls, man muss nur das WMI-Core Paket vom der Microsoft Seite laden.
hier der Link:
http://www.microsoft.com/downloads/details.aspx?displaylang=de&FamilyID=afe41f46-e213-4cbf-9c5b-fbf236e0e875
Kommentar von VB Newbie am 03.08.2004 um 21:26
Ich habe einen Bluetooth Adapter und eine normale LAN Karte, welche beide mit einer Netzwerk-Brücke verbunden sind. Dieser Code bringt mir nur die MAC-Adresse des Bluetooth Adapters!
Ich nutze Win XP mit Service Pack 1 und VB 6