Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Den Namen der Netzwerkverbindung ermitteln (W2K) (https://www.delphipraxis.net/107411-den-namen-der-netzwerkverbindung-ermitteln-w2k.html)

RWarnecke 27. Jan 2008 12:22


Den Namen der Netzwerkverbindung ermitteln (W2K)
 
Hi DP'ler,

ich lesen den Namen der Netzwerkverbindung (z.B. LAN-Verbindung) unter Windows XP oder VISTA mit MSDN-Library durchsuchenGetAdapterAddresses das funktioniert auch ganz wunderbar. Nur ist diese Funktion nicht für Windows 2000 geeignet. Für Windows 2000 nutze ich MSDN-Library durchsuchenGetAdaptersInfo und MSDN-Library durchsuchenGetNetworkParams um weitesgehend an die Informationen heranzukommen wie mit GetAdapterAddresses.

Mir fehlt jetzt nur noch der Namen der Netzwerkwerkverbindung (z.B. LAN-Verbindung), wie kann ich den unter Windows 2000 ermitteln ?

Surrounder 13. Mär 2008 15:26

Re: Den Namen der Netzwerkverbindung ermitteln (W2K) / XP
 
Ich suche ebenfalls nach einer Lösung wie ich die Namen der Netzwerkverbindungen auslesen kann, hat da jemand eine Idee? Habe schon IPHelper und alles versucht, aber bin bisher nirgends fündig geworden.

Ich habe in einem anderen Thread schon nach einer Lösung gesucht wie ich die IP Adresse einer Netzerkkarte umsetzen kann. Das habe ich jetz mit "netsh" hinbekommen. Damit das richtig funktioniert muss ich aber die Namen der Netzwerkverbindungen herausbekommen.

Ich brauche also nicht den herstellernamen der Karte sondern den Namen z.B. "LAN-Verbindung" den man dem Adapter in der Netzwerkeinstellungen setzen kann. Danke für jeden Tip.

RWarnecke 13. Mär 2008 19:01

Re: Den Namen der Netzwerkverbindung ermitteln (W2K)
 
Hi,

ich habe das mittlerweile über die Registry gelöst. Schaue Dich mal bei diesen beiden Key's unter HKLM um :

HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D3 6E972-E325-11CE-BFC1-08002BE10318}
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E 972-E325-11CE-BFC1-08002BE10318}

Du brauchst dazu den Adapternamen, den Du über MSDN-Library durchsuchenIP_ADAPTER_INFO und MSDN-Library durchsuchenGetAdaptersInfo ermitteln kannst. Das wende ich bei meinem SystemInfo Programm an. (Link in Signatur) Damit kannste ja vorher testen.

Surrounder 13. Mär 2008 21:02

Re: Den Namen der Netzwerkverbindung ermitteln (W2K)
 
Hi,

danke für die Info, habe mit dein Programm einmal heruntergeladen. Wird der Name der Netzwerkverbindung da auch irgendwo angezeigt? Habe im Reiter Netzwerk geschaut, aber dort nur die Namen der Netzwerkkarte gefunden (also z.B. Intel Wireless Pro...) nur den Text "Drahtlose Netzwerkverbindung" bräuchte ich ja für den Befehl netsh

RWarnecke 13. Mär 2008 21:08

Re: Den Namen der Netzwerkverbindung ermitteln (W2K)
 
Zitat:

Zitat von Surrounder
Hi,

danke für die Info, habe mit dein Programm einmal heruntergeladen. Wird der Name der Netzwerkverbindung da auch irgendwo angezeigt? Habe im Reiter Netzwerk geschaut, aber dort nur die Namen der Netzwerkkarte gefunden (also z.B. Intel Wireless Pro...) nur den Text "Drahtlose Netzwerkverbindung" bräuchte ich ja für den Befehl netsh

Stimmt, ich dachte ich hatte es schon eingebaut. Danke für den Hinweis.

Surrounder 14. Mär 2008 13:11

Re: Den Namen der Netzwerkverbindung ermitteln (W2K)
 
also ich habe das aus meinem erstellten Code jetzt mal wieder entnommen und ein paar Dinge musste ich einflicken damit es läuft, aber ich dachte ich poste das mal wie ich das jetzt vom Prinzip her gemacht habe da hier im Forum schon mehrfach danach gefragt wurde und ich selber nirgends eine direkt funktionierende Lösung gefunden habe

Delphi-Quellcode:
procedure TForm1.ReadRegistryKeys();
var
   Reg: TRegistry;
   s, key1, key2: String;
   s1, s2, nwv : TStrings;
   i, n, j : Integer;
begin
   Reg := TRegistry.Create;
   s1 := TStringList.Create;
   s2 := TStringList.Create;
   nwv := TStringList.Create;
   try
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      key1 := 'SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}';
      Reg.OpenKey( key1, False );
      Reg.GetKeyNames( s1 );
      n := s1.count;
      for i := 0 to n - 1 do begin
         s := s1[i];
         if s[1] = '{' then begin
            key2 := key1 + '\' + s1[i];
            Reg.CloseKey;
            Reg.OpenKey( key2, False );
            s2.Clear;
            Reg.GetKeyNames( s2 );
            for j := 0 to s2.Count - 1 do begin
               if s2[j] = 'Connection' then begin
                  key2 := key2 + '\' + s2[j];
                  Reg.CloseKey;
                  Reg.OpenKey( key2, False );
                  nwv.Add( Reg.ReadString('Name') );
               end;
            end;
         end;
      end;
      Reg.CloseKey;
   finally
      Reg.Free;
   end;
   s1.Free;
   s2.Free;
end;

RWarnecke 14. Mär 2008 15:07

Re: Den Namen der Netzwerkverbindung ermitteln (W2K)
 
Frage, warum gehst Du nicht über den Adapternamen ? Dann brauchst Du nicht alle Unterschlüssel durchzugehen. Der Adaptername ist eindeutig. Da ich gerade auf Arbeit bin, werde ich heute Abend mal ein Beispiel dazu hierhin posten.

Surrounder 14. Mär 2008 21:03

Re: Den Namen der Netzwerkverbindung ermitteln (W2K)
 
Wie meinst Du das mit über den Adapternamen gehen? Meinst Du zum Suchen des Namens der Netzwerkverbindung? Ich brauch den Namen der Nertzwerkverbindung ja um mit dem Befehl "netsh" die IP Adresse meiner Netzwerkkarte von dhcp auf eine feste Adresse zu ändern.

http://www.delphipraxis.net/internal...t.php?t=130365

RWarnecke 14. Mär 2008 21:38

Re: Den Namen der Netzwerkverbindung ermitteln (W2K)
 
Jeder Netzwerkadapter hat einen Adapternamen, den Du über GetAdaptersInfo auslesen kannst. Dieser ist eindeutig. Siehe mein Beispiel, so bekommst Du nur die Netzwerkkarten vom Type Ethernet. Bei Deiner Variante werden auch noch die PPP-Verbinungen mit ausgelesen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 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