Netzwerkkarten und Netzwerkeinstellung auslesen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Incognito.

    Netzwerkkarten und Netzwerkeinstellung auslesen

    Hallo liebe Leute, ;)

    ich bin ziemlich neu in VB 2010. Wir müssen im Unterricht ein Programm schreiben was die einzelnen Netzweradapter ausliest und die Einstellungen. (IP, Subnet, usw.) Jetzt wollte ich erstma die einzelnen Netzwerkkarten auflisten lassen. Hier ist mein Code:

    VB.NET-Quellcode

    1. Private Sub getWMI_info()
    2. Dim oAdapters As Object
    3. Dim oAdapter As Object
    4. ' lblCompName2.Text = (Environ$("computername"))
    5. oAdapters = GetObject("winmgmts:").execquery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
    6. For Each oAdapter In oAdapters
    7. lstAdapter.Items.Add(oAdapter)
    8. Next
    9. End Sub


    Leider steht in der Listbox dann immer System.___ ComObejct.
    Wäre nett wenn mir einer helfen kann und vielleicht auch kurz erklären was ich flasch mache und wie eine richtige Lösung für das Auslesen der Netzwerkkarte aussieht und diese auch wiederum kurz erläutert, da ich es dem Lehrer auch erläutern muss. Vielen Dank schonmal.

    Mfg
    Cebrox

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cebrox“ ()

    Ok, versucht hab ichs.^^
    Ich will jetzt die IP, Subnet, usw zu dem jeweiligen Netzwerkadapter in verschiedenen Labels anzeigen. Mein Code zum Auslesen der Netzwerkadapter sieht in moment so aus.

    VB.NET-Quellcode

    1. Public Sub ShowNetworkInterfaces()
    2. Dim adapters As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces()
    3. For Each adapter In adapters
    4. If adapter.NetworkInterfaceType = NetworkInterfaceType.Ethernet _
    5. Or adapter.NetworkInterfaceType = NetworkInterfaceType.Wireless80211 Then
    6. lstAdapter.Items.Add(adapter.Description)
    7. End If
    8. Next adapter
    9. End Sub


    Ich hab folgende Imports:

    VB.NET-Quellcode

    1. Imports System.Management
    2. Imports System.Runtime.InteropServices
    3. Imports System.Net.NetworkInformation
    4. Imports System.Net


    Die verschiedenen Lables heißen:
    lblIP2 -> IP-Adresse
    lblPriDNS2 -> Primäre DNS
    lblSekDNS2 -> Sekundäre DNS
    lblGateway2 -> Gateway
    usw.

    Vielen Dank im Vorraus
    Cebrox
    Danke, mithilfe des zweiten Links hab ichs jetzt schonmal hinbekommen MAC- und Subnetadresse abzurufen. Die anderen Sachen leider noch nich. Ich kann zwar die IP abrufen, aber die dann zu keinem Netzwerkgerät zuordnen. Für weiter Tipps und Links wäre ich sehr dankbar. ;)

    MfG
    Cebrox
    Ich hab keine Ahnung, ob das Thema noch aktuell ist, aber mit WMI kommst du gut dran und das war glaub ich auch dein erster Ansatz. Es sollte eigentlich alles funktionieren:


    VB.NET-Quellcode

    1. Dim NetzwerkAdapter As New Management.ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True")
    2. For Each Adapter As Management.ManagementObject In NetzwerkAdapter.Get()
    3. Index = CInt(Adapter.Item("Index").ToString)
    4. Description = Adapter.Item("Description").ToString
    5. MacAddress = Adapter.Item("MACAddress").ToString
    6. DHCPEnabled = CBool(Adapter.Item("DHCPEnabled").ToString)
    7. DHCPServer = Net.IPAddress.Parse(Adapter.Item("DHCPServer").ToString)
    8. IPAddress = Net.IPAddress.Parse(Adapter.Item("IPAddress")(0).ToString)
    9. IPSubnet = Net.IPAddress.Parse(Adapter.Item("IPSubnet")(0).ToString)
    10. DHCPLeaseObtained = Adapter.Item("DHCPLeaseObtained").ToString
    11. DHCPLeaseExpired = Adapter.Item("DHCPLeaseExpires").ToString
    12. DNSHostname = Adapter.Item("DNSHostName").ToString
    13. Next

    Du musst dir dann bloß noch ein System überlgen in dem du das für jeden Adapter speicherst. Ich hoffe ich konnte dir weiterhelfen.
    Ach ja. Alle Werte sind so konvertiert, dass man sie weiterverwenden kann. Also die zum Beispiel die IPAdresse ist ein IPAddress-Objekt. Wenn du es als String willst, machst du das IPAddress.Parse(..) halt wieder weg. Genause bei CBool etc., aber ich denk mal das hast du gemerkt ;)