AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Aktiven Netzwerkadapter bestimmen
Thema durchsuchen
Ansicht
Themen-Optionen

Aktiven Netzwerkadapter bestimmen

Ein Thema von dbdeath74 · begonnen am 10. Apr 2006 · letzter Beitrag vom 11. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
dbdeath74

Registriert seit: 30. Aug 2005
53 Beiträge
 
#1

Aktiven Netzwerkadapter bestimmen

  Alt 10. Apr 2006, 15:28
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
  Mit Zitat antworten Zitat
Heffalump

Registriert seit: 3. Aug 2005
278 Beiträge
 
RAD-Studio 2009 Ent
 
#2

Re: Aktiven Netzwerkadapter bestimmen

  Alt 10. Apr 2006, 15:51
Du könntest die Gateway Adresse auslesen und anhand dieser ein Zuordnung treffen.
  Mit Zitat antworten Zitat
dbdeath74

Registriert seit: 30. Aug 2005
53 Beiträge
 
#3

Re: Aktiven Netzwerkadapter bestimmen

  Alt 12. Apr 2006, 14:24
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
  Mit Zitat antworten Zitat
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#4

Re: Aktiven Netzwerkadapter bestimmen

  Alt 9. Mai 2008, 14:30
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;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Aktiven Netzwerkadapter bestimmen

  Alt 9. Mai 2008, 15:00
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.
Angehängte Dateien
Dateityp: zip multiconneciton_358.zip (12,0 KB, 89x aufgerufen)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#6

Re: Aktiven Netzwerkadapter bestimmen

  Alt 9. Mai 2008, 15:08
tolle Sache, aber das Programm zeigt mir jetzt ja den aktuell aktiven Netzwerkadapter doch auch wieder nicht an?

Zitat von SirThornberry:
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.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Aktiven Netzwerkadapter bestimmen

  Alt 9. Mai 2008, 15:12
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)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#8

Re: Aktiven Netzwerkadapter bestimmen

  Alt 9. Mai 2008, 15:15
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 von SirThornberry:
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)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Aktiven Netzwerkadapter bestimmen

  Alt 9. Mai 2008, 15:18
War das jetzt eine Zustimmung oder Frage?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#10

Re: Aktiven Netzwerkadapter bestimmen

  Alt 9. Mai 2008, 15:31
beides )
Wünsche schöne Pfingsten!

Zitat von SirThornberry:
War das jetzt eine Zustimmung oder Frage?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz