Subnet ermitteln

Dörti.Hermi

Erfahrenes Mitglied
Hallo,

folgendes: Wie kann ich mit VB (ohne .NET!) die Subnetmask ermitteln?
Geht das vielleicht irgendwie über die Shell, dass ich da cmd.exe aufrufe und bestimmte Paramter übergebe? Oder über eine Batch-Datei?

Ich hab schon was im WWW gefunden:
Code:
Dim Adapters, curAdapter As Object
    
    'Aktivierte Netzwerkarten ermitteln
    Set Adapters = GetObject("winmgmts:").execquery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
 
    ' Objekte durchlaufen
    For Each curAdapter In Adapters
        With curAdapter
            subnet = Join(.IPSubnet)
        End With
    Next
, was auch im DEBUG-Mode funktioniert, aber da bei meinem Laptop eine LAN und eine WLAN-Karte verbaut ist, nicht mehr so ganz wie es soll. Er wählt natürlich alle zwei Adapter aus, wobei jetzt gerade nur die WLAN-Karte verwendet wird (LAN Karte ist aber nicht deaktiviert!). Beim ersten Durchlauf ist der WLAN Adapter ausgewählt, Subnet wird korrekt mit "255.255.255.0" ermittelt. Beim zweiten Durchlauf wird die LAN Karte gewählt, kein Kabel angesteckt >> Subnet = ""
Damit wird dann logischerweise das richtige Subnet von vorher überschrieben.

Kann mir jemand weiterhelfen?

Vielen Dank,
Lg
 
Hat zwar keiner geantwortet, aber es kann ja nicht schaden die Lösung des Problems zu posten, wie man mit VB das Subnet ermittelt ;)

Code:
Dim subnet(CONST) as Variant
Dim Adapters, curAdapter As Object
    
    'Aktivierte Netzwerkarten ermitteln
    Set Adapters = GetObject("winmgmts:").execquery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
 
    ' Objekte durchlaufen
    i = 0
    For Each curAdapter In Adapters
        With curAdapter
            subnet(i) = Join(.IPSubnet)
            i = i + 1
        End With
    Next

Es werden alle Netzwerkkarten ausgwählt, auch wenn sie gerade nicht in Verwendung sind, d.h. keine IP zugewiesen haben. Man kann einfach herausfinden, welche Netzwerkkarte die richtige ist, in dem man einfach eine Abfrage auf subnet != "" macht...

Vielleicht brauchts ja noch jemand! :)

Lg
 

Neue Beiträge

Zurück