Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0607: MAC einer Netzwerkkarte per WMI auslesen

 von 

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:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [1,96 KB]

'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-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

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