nilstk
Goto Top

Auslesen des Namens der LAN-Verbindung

Moin,

ich suche für die Umstellung der LAN-Verbindung den Namen der LAN Verbindung.

Im Englischen heißt sie z.B. "Local Area Connection", im chinesischen so und so ... usw.

Leider immer anders face-sad

Gibt es eine Möglichkeit den Namen aus der Registry oder von woanders zu lesen? (unter 98,2k,XP)

(Visual Basic, C ... )

Danke für jegliche Hilfe.

Content-Key: 29529

Url: https://administrator.de/contentid/29529

Ausgedruckt am: 28.03.2024 um 10:03 Uhr

Mitglied: misterdemeanor
misterdemeanor 03.04.2006 um 18:30:53 Uhr
Goto Top
mit .Net? Oder programmierst Du noch in verächtlicheren Versionen? *fg*
Mitglied: nilstk
nilstk 03.04.2006 um 18:42:45 Uhr
Goto Top
verächtlichen Versionen face-smile

RapidQ - ist sehr Visual Basic ähnlich, so dass ich das fast 1:1 übernehmen könnte.

Weiß jemand da evtl. Rat?
Wie kann ich mit VB den Namen der LAN Verbindung feststellen - unabhängig von der Sprache.
Und - wie bekomme ich die MAC Adresse dieser Verbindung?

Das Ganze möglichst mit Visual Basic, aber C wäre auch ok...
Mitglied: misterdemeanor
misterdemeanor 03.04.2006 um 19:25:33 Uhr
Goto Top
warum Dir eine(n) klaren Lösungs-ansatz / Vorschlag geben WENN DU nicht klar(genauer) wirst?

Deine Problemstellung kann entweder mittels Win32Api oder .Net "Calls" gelöst werden-->In welcher Sprache(Version) programmierst Du? VB6, VB.Net VB2005? Oderr solls da doch lieber C,C++ oder C# sein? Wiederum in unbekannter Version!

Wie kann ich mit VB den Namen der LAN Verbindung feststellen - unabhängig von der Sprache.

Ich nehme jetzt einmal an das es nur einen "Ethernetfähigen" Adapter auf dem Zielrechner gibt...

Und - wie bekomme ich die MAC Adresse dieser Verbindung?

Die MAC-Adresse welchen Rechners der Verbindung?

Entschuldige wenn ich nur mit Gegenfragen antworte.

Grüße
Mitglied: nilstk
nilstk 03.04.2006 um 19:52:21 Uhr
Goto Top
Ich kann nicht nachvollziehen, warum es nicht genau ist face-smile

Steht doch da. RapidQ - auch wenn die Programmiersprache wohl den meistne unbekannt ist (VB ähnlich).

Es geht darum, dass ich den Namen der aktuellen LAN-Verbindung haben möchte, denn im englischen XP heißt sie z.B. "Local Area Connection", während im chinesischen XP nur noch wilde Zeichen da stehen.

Und ich würde dann zu diesem Adapter (also dem 1. Netzwerkadapter für LAN) gerne die MAC Adresse bekommen.

Das ganze mit VB bzw. ggf. über WinAPI - nur wie geht das?

Angenommen ich würde es in VB programmieren wollen ...
Mitglied: misterdemeanor
misterdemeanor 04.04.2006 um 16:27:18 Uhr
Goto Top
So, jetzt habe ich mich mal mit Deinem Problem befasst und gebe Dir ersteinmal einen Link mit dessen Du schon einiges anfangen können solltest :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk ...

Um genau zu sein ist das die /Perfekte Lösung/ Deines Problemes.

Wenn Du nicht ganz mit zu Recht kommst schicke ich Dir auch gerne N bissel fertigen Code *gg*

Grüße

Felix
Mitglied: misterdemeanor
misterdemeanor 04.04.2006 um 22:09:46 Uhr
Goto Top
Hi Nils,
jetzt habe ich mich ein bischen mit WMI beschäftigt und in nem VBA Modul folgenden Code zum Anzeigen der (physikalisch) vorhanden Netzwerkadapter geschrieben. Lass mich mal wissen ob das in die Richtung einer für Dich geeigneten Lösung geht. Es ist zwar noch ziemlich unsauber programmiert...aber gucke selbst.
Public Function getAdapterInfos()
  Dim objWMIService As Object
  Dim objRegistry As Object
  Dim Adapters As Object
  Dim Adapter As Object
  Dim Adapter2 As Object
  Dim AConfig As Object
  Dim conName As String
  Dim keyPath As String
  Dim sql As String
  Dim Computer As String
  Dim s As String
  Dim regPath As String
  Const HKEY_LOCAL_MACHINE = &H80000002
  Computer = "localhost"  
  
  Set objRegistry = GetObject("winmgmts:" & "!\\" & Computer & "\root\default:StdRegProv")  

  sql = "SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionStatus Is Not NULL And MACAddress Is Not NULL"  

  Set objWMIService = GetObject("winmgmts:" & "!\\" & Computer & "\root\cimv2")  
  Set Adapters = objWMIService.ExecQuery(sql)

  For Each Adapter In Adapters
    s = Adapter.Name & "," & Adapter.AdapterType & "," & Adapter.MACAddress & ","  
    Set AConfig = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where Index = " & Adapter.Index)  
    
    For Each Adapter2 In AConfig
      keyPath = "SYSTEM\CurrentControlSet\Control\Network\" & _  
        "{4D36E972-E325-11CE-BFC1-08002BE10318}\" & Adapter2.SettingID & "\Connection"  
      objRegistry.GetExpandedStringValue HKEY_LOCAL_MACHINE, keyPath, "Name", conName  
    Next Adapter2
    s = s & conName
    Debug.Print s
  Next
End Function
Mitglied: nilstk
nilstk 05.04.2006 um 00:50:20 Uhr
Goto Top
Ich danke Dir erstmal, ich muss mal sehen inwieweit ich das umsetzen kann,
da ich in meiner Sprache einen DLL Aufruf benötige.
Mitglied: misterdemeanor
misterdemeanor 05.04.2006 um 11:51:45 Uhr
Goto Top
Ja, da weiß ich nicht inwiefern das mit diesem RapidQ möglich ist. Das einbinden von .dll's soll ja möglich sein, aber auch das erstellen? Wie Du es im vorigen Post andeutest kann in RapidQ nicht der Code direkt verwendet werden...?

Also die /hardwarebasierten/ Netzwerkverbindungen werden wohl in allen Win-OS Versionen ab 98 in SubKeys zu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318} gespeichert. Von dort werden dann auch die Informationen für den Ordner Netzverkverbindungen geholt.
Mein Code ,macht nix anderes als diese Subkeys von "aktivierten" Adaptern aus der Registry zu lesen. Allerdings ist er soweit nicht wirklich einsetzbar. Sollte nur mal dazu dienen Dir eine Möglichkeit aufzuzeigen.

Kannst Du denn generell von Deiner Sprache aus auf die Registry zugreifen?

Grüße
Mitglied: Biber
Biber 15.04.2006 um 09:50:35 Uhr
Goto Top
Moin nilstk,

ist mit misterdemeanors Antwort Deine Frage nach dem Registry-Key beantwortet und kann dieser Thread geschlossen werden?

Grüße
Biber, Mod in diesem Bereich
Mitglied: nilstk
nilstk 15.04.2006 um 14:05:22 Uhr
Goto Top
Hallo,

ich danke für die zahlreichen Hilfen. Meine Frage ist erstmal beantwortet - weitgehend zumindest. Wie ich das umsetze, muss ich mir einmal überlegen. Vielen Dank auf jeden Fall und Frohe Ostern...