![]() |
Aktiven Netzwerkadapter bestimmen
Hallo,
zur Erfassung unserer Hardware schreibe ich gerade ein kleines Tool. Nun bin ich bei den Netzwerkadaptern auf ein kleines Problem gestossen. Die Macadressen aller aktiven Adapter bekomme ich mit GetMAcAddress aus der JCL. Mit GetAdapterInfo bekommme ich auch noch weitere Informationen wie Namen usw. Kann ich irgendwie bestimmen welcher Netzwerkadapter der wirklich aktive ist? Beispiel: Auf einem Notebook gibt es eine LAN Verbindung, eine WLAN Verbindung und von mir aus noch 2 Netzwerkadapter von VMWare .... Mich interessiert eigentlich nur die aktive LAN Verbindung, die in der Domäne drin hängt, und über die der momentane Netzwerkverkehr läuft. Kennt jemand eine Möglichkeit den primären Netzwerkadapter herauszufinden? Ich dachte eigentlich bisher es ist der erste aktive den ich finde, nun musste ich leider feststellen das sich zum Beispiel die VMWare Adapter als erstes in die Liste hängen .. :( Bin über jeden Rat dankbar. gruß dbdeath74 |
Re: Aktiven Netzwerkadapter bestimmen
Du könntest die Gateway Adresse auslesen und anhand dieser ein Zuordnung treffen.
|
Re: Aktiven Netzwerkadapter bestimmen
hmmm die Gateway adresse hilft mir hier nicht weiter.
über die IP kann ich vielleicht noch die VMWare Adapter rauskicken weil die eine lokale IP haben. Aber LAN und WLAN können dieselbe Gateway haben. Man muss doch irgendwie testen können welches der primäre Adapter ist :( Gruß dbdeath74 |
Re: Aktiven Netzwerkadapter bestimmen
Ok ist zwar schon Jahre her aber die Frage kommt ja immer mal wieder auf. Wie kann ich den aktiven Netzwerkadapter finden?
Hab da mal (auch vor Jahren) was gemacht um den ersten Adapter auszulesen (der aktive): -firstadapter ist eine String Variable
Delphi-Quellcode:
{---**--LOG----SCHREIBEN---------------------**----------}
logfileschreiben('search for network adapters...'); {---**--LOG----SCHREIBEN---------------------**----------} {------Windows 2000/XP ersten Adapter finden und speichern)--------------------------------} reg := TRegistry.Create; reg.Access :=KEY_READ; reg.rootkey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SYSTEM\Setup\AnswerFileMap', false); if reg.ValueExists('Adapter1') then begin firstadapter:=reg.ReadString('Adapter1'); end else begin firstadapter:='unknown'; end; reg := TRegistry.Create; reg.Access :=KEY_READ; reg.rootkey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\'+firstadapter, false); if reg.ValueExists('DHCPServer') then begin dhcpserver:=reg.ReadString('DHCPServer'); end; if reg.ValueExists('EnableDHCP') then begin enabledhcp:=inttostr(reg.ReadInteger('EnableDHCP')); end; if reg.ValueExists('DHCPDefaultGateway') then begin ReadREG_MULTI_SZ(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\'+firstadapter, 'DHCPDefaultGateway', Memo1.Lines); dhcpdefaultgateway:='DHCP: '+memo1.lines.Strings[0]; end; reg.closekey; reg.free; |
Re: Aktiven Netzwerkadapter bestimmen
Liste der Anhänge anzeigen (Anzahl: 1)
uj, nicht über die Registry. Dafür gibt es Api Funktionen. Zudem funktioniert deine Funktion nicht. Bei mir gibt es den Schlüssel zum Beispiel gar nicht in der Registry. Zudem wird bei dir nicht geprüft ob OpenKey fehl schlegt. Dadurch wird auf den Value im falschen Zweig geprüft wenn OpenKey bereits fehl schlägt
Der "aktive" Adapter wird durch die Metric bestimmt. Es gibt eine Routingtabelle welche festlegt über welche Leitung welche Anfragen gehen. Gibt es mehrere mögliche Leitungen wird über die Metric die Priorität festgelegt. im Windows kannst du mit "route print" die dir aktuellen Ruten anzeigen lassen. Für die Apifunktionen hab ich mal was in den Anhang gepackt. |
Re: Aktiven Netzwerkadapter bestimmen
tolle Sache, aber das Programm zeigt mir jetzt ja den aktuell aktiven Netzwerkadapter doch auch wieder nicht an?
Zitat:
|
Re: Aktiven Netzwerkadapter bestimmen
richtig. Wie ich bereits schieb wird die "aktive" Verbindung über die Metric bestimmt.
Zudem gibt es ja keine wirkliche aktive Verbindung. Denn welche Verbindung verwendet wird hängt ja auch vom Ziel ab. Wenn ich zwei Netzwerkkarten habe welche beide in verschiedene Netze gehen wird je nach Ziel die eine ander andere verwendet. Und nur wenn beide das gleiche Netz haben wird durch die Metric bestimmt welche bevorzugt wird. (Metric ist die letzte Spalte bei Routingtabelle in meinem Beispielprogramm) |
Re: Aktiven Netzwerkadapter bestimmen
ok für diesen Fall macht das Sinn. Aber wenn du in einem Laptop einen LAN Adapter und einen WLAN Adapter hast ist meist nur einer aktiv und dementsprechend mit einer IP etc. versorgt.
Da muss man nun wissen welcher ist es um den richtigen Adapter auszulesen und evtl. die dazugehörigen Parameter. Zitat:
|
Re: Aktiven Netzwerkadapter bestimmen
War das jetzt eine Zustimmung oder Frage? :gruebel:
|
Re: Aktiven Netzwerkadapter bestimmen
beides :))
Wünsche schöne Pfingsten! Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz