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 Netzwerkkarten Info - inkl. Treiberinfo (https://www.delphipraxis.net/140025-netzwerkkarten-info-inkl-treiberinfo.html)

cherry 10. Sep 2009 13:40


Netzwerkkarten Info - inkl. Treiberinfo
 
Ich versuche schon seit Tagen verzweifelt an folgende Infos ran zu kommen.
Ich bräuchte eine Liste der vorhandenen Netzwerkkarten (Name, Hersteller, Treiberversion, Treiber Datum)

Ich hab keinen Hint wie ich das anstellen soll...

mleyen 10. Sep 2009 14:08

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Auch wenn ich noch nie selber damit hantiert habe, so meine ich mich zu erinnern, dass man an viele Infos durch die 'iphlpapi.dll' kommt.
Z.B. sticht mir auf anhieb da die MSDN-Library durchsuchenGetAdaptersInfo-Function ins Auge.
Wie man jedoch an Treiberinfos rankommt weiß ich momentan nicht.

Phoenix 10. Sep 2009 14:10

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Schau Dir mal WMI an. Damit müssten alle diese Infos auszulesen sein. Dazu gibts hier in der DP eigentlich ausreichend Threads und Demoprogramme für.

cherry 10. Sep 2009 15:05

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
WMI, naja. Am liebsten schon direkt WinAPI so weit es geht. Sowie eben z.B. GetAdaptersInfo, nur hab ich eben immer noch den Treiber nicht. Wie würde das denn mit WMI gehen, hat jmd einen Select oder so für den Netzwerkkartentreiber parat?

JamesTKirk 10. Sep 2009 15:25

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Hi!

Zumindest wenn ich nach dem Code im Gerätemanager von ReactOS gehe, is das eine etwas kompliziertere Angelegenheit. Den Code findest du übrigens hier ab Zeile 889 (FindCurrentDriver). Die verwendeten Strukturen (damit du dir die Parameter raussuchen kannst) sollten alle im Verzeichnis der devmgr-Dll sein oder aber sowieso zur WinAPI gehören.

Gruß,
Sven

cherry 1. Okt 2009 11:51

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Hab da was gefunden:
SQL-Code:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001
wie siehts da bei euch aus? Ich find da zb:
DriverDate, DriverVersion, DriverDesc ...

Alles was ich brauche, habs bei 4 PCs getestet Alle WinXP SP2 aber teils unterschiedliche Adapter. Der Pfad ist immer derselbe...

Kann ich das so machen? oder ist das zu unsauber? (Muss nur für XP gehen, alles andere interessiert nicht!)

mleyen 1. Okt 2009 12:07

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Also bei mir existiert HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001 überhaupt nicht.
Da gibts nur ControlSet002 - 004 :?

cherry 1. Okt 2009 12:08

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Zitat:

Zitat von mleyen
Also bei mir existiert HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001 überhaupt nicht.
Da gibts nur ControlSet002 - 004 :?

Was hast du für ein Betriebssystem?

mleyen 1. Okt 2009 12:19

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Hier: XP Prof SP 3

cherry 1. Okt 2009 12:28

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Hmmm... was hast du denn für einen PC. Marke, Typ usw? und was hast du für eine Netzwerkkarte? und wieviele Karten hast du?

espen 1. Okt 2009 12:35

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Hallo,

hier ein WMI-Ansatz. Ich habe mal Dieses Beispiel angepasst:

Delphi-Quellcode:
uses
  WbemScripting_TLB,
  ActiveX,
  OleServer;
...

procedure TForm1.Button1Click(Sender: TObject);
var
  aSrv       : ISWbemServices;
  aObjSet    : ISWbemObjectSet;
  vNVS       : OleVariant;
  aNVSDummy  : IDispatch;
  pEnum      : IEnumVARIANT;
  vOut       : OleVariant;
  dwRetrieved : LongWord;
  hRes       : HResult;
begin
  aSrv   := SWbemLocator1.ConnectServer('','','','','','',0,vNVS);
  aObjSet := aSrv.ExecQuery('SELECT * FROM Win32_Networkadapter', 'WQL', 0, aNVSDummy);
  pEnum  := aObjSet.Get__NewEnum as IEnumVARIANT;
  while (TRUE) do
  begin
    hRes := pEnum.Next(1, vOut, dwRetrieved);
    if hRes <> S_OK then
    begin
      Break;
    end;
    ListBox1.Items.Add(VarToStr(vOut.Name));
  end;
end;
Ganz vergessen, hier noch die Properties:

Delphi-Quellcode:
class Win32_NetworkAdapter : CIM_NetworkAdapter
{
  string  AdapterType;
  uint16   AdapterTypeID;
  boolean AutoSense;
  uint16   Availability;
  string  Caption;
  uint32   ConfigManagerErrorCode;
  boolean ConfigManagerUserConfig;
  string  CreationClassName;
  string  Description;
  string  DeviceID;
  boolean ErrorCleared;
  string  ErrorDescription;
  string  GUID;
  uint32   Index;
  datetime InstallDate;
  boolean Installed;
  uint32   InterfaceIndex;
  uint32   LastErrorCode;
  string  MACAddress;
  string  Manufacturer;
  uint32   MaxNumberControlled;
  uint64   MaxSpeed;
  string  Name;
  string  NetConnectionID;
  uint16   NetConnectionStatus;
  boolean NetEnabled;
  string  NetworkAddresses[];
  string  PermanentAddress;
  boolean PhysicalAdapter;
  string  PNPDeviceID;
  uint16   PowerManagementCapabilities[];
  boolean PowerManagementSupported;
  string  ProductName;
  string  ServiceName;
  uint64   Speed;
  string  Status;
  uint16   StatusInfo;
  string  SystemCreationClassName;
  string  SystemName;
  datetime TimeOfLastReset;
};

mleyen 1. Okt 2009 12:47

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Joa, einfach nen Desktopsystem halt.
Marke, Typ? :cyclops:
Null Ahnung, hab den, hier im Betrieb, auch erst seid kurzem.

Aber eins weiß ich, das Originalsystem ist ziemlich alt und es hat sich im Laufe der Zeit massig Hardware geändert.
Z.B. als ich den letztens vorgesetzt bekommen hab, hab ich erstmal 2 Netzwerkkarten ausgebaut (die wurden anderweitig gebraucht) und die OnBoard-Karte übers Bios aktiviert. (fragt mich nicht warum die deaktiviert war :gruebel: )
D.h. momentan hab ich nur eine OnBoard-Netzwerkkarte.
Gerätename davon ist: "ASUSTeK/Broadcom 440x 10/100 Integrated Controller"

cherry 1. Okt 2009 13:02

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Zitat:

Zitat von espen
Hallo,

hier ein WMI-Ansatz. Ich habe mal Dieses Beispiel angepasst

hi ich versuchte soeben das Beispiel aus, leider weiss ich nicht woher ich die Komponente SWbemLocator1 nehmen soll?!

@mleyen
wie siehts denn im CurrentControlSet aus?

mleyen 1. Okt 2009 13:10

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Zitat:

Zitat von cherry
wie siehts denn im CurrentControlSet aus?

Ja, der existiert und sieht auch passend aus, da in .../0008 auch der Gerätename steht.

espen 1. Okt 2009 13:17

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

Du musst das ActiveX WbemScripting importieren (bei Komponenten->ActiveX importieren)
oder Du nimmst einfach den Anhang.

cherry 1. Okt 2009 16:11

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Also ne, so dumm kann ich ja nicht sein. Soll SWbemLocator1 eine Komponente sein oder wie? - In der Palette ist sie jedenfalls nirgens...
wenn ich definiere :

Delphi-Quellcode:
var
 SWbemLocator1: SWbemLocator;
kann ich zwar Kompillieren, aber bei der Zeile:

Delphi-Quellcode:
aSrv   := SWbemLocator1.ConnectServer('','','','','','',0,vNVS);
gibts dann ne Zugriffsverletzung!

RWarnecke 1. Okt 2009 16:18

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Hallo cherry,

wie meine Vorredner es schon gesagt haben, kannst Du die Infos über WMI auslesen. Eine alternative wären aber noch die folgenden Windows API-Befehle :

MSDN-Library durchsuchenGetNetworkParams
MSDN-Library durchsuchenGetAdaptersInfo
MSDN-Library durchsuchenGetPerAdapterInfo
MSDN-Library durchsuchenGetAdapterAdresses

Damit kannst Du fast eine komplette IPCONFIG Ausgabe nachbauen.

cherry 1. Okt 2009 16:23

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Zitat:

Zitat von RWarnecke
Damit kannst Du fast eine komplette IPCONFIG Ausgabe nachbauen.

@RWarnecke
Ich hab mir schon die ganze nachgebaut, aber das reicht mir nicht. Vielleicht ist dir entgangen, dass ich die Treiberinformationen haben muss!!!??!!

Zitat:

Zitat von RWarnecke
wie meine Vorredner es schon gesagt haben, kannst Du die Infos über WMI auslesen.

@espen
@RWarnecke

Beim Beispiel von @espen erhalte ich einige Informationen, aber NICHT die die für mich wichtig sind!!!! -> Ich habe übrigens selber stundenlang versucht die gewünschten Informationen: Treiberversion, Treiberdatum über WMI herauszubekommen, leider ohne Erfolg...

Wenn Ihr wisst wies geht, dann sagts mir doch bitte?!

RWarnecke 3. Okt 2009 10:34

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Die Treiberversion kannst Du über die Registry rausbekommen.

für Windows XP oder höher :
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E 972-E325-11CE-BFC1-08002BE10318}

für Windows 2000 :
HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D3 6E972-E325-11CE-BFC1-08002BE10318}

So mache ich das in meinem SystemInfo.

Edit : Sogar das Treiberdatum bekommst Du über diesen Registryschlüssel.

cherry 6. Okt 2009 06:56

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von RWarnecke
Die Treiberversion kannst Du über die Registry rausbekommen.

für Windows XP oder höher :
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E 972-E325-11CE-BFC1-08002BE10318}

für Windows 2000 :
HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D3 6E972-E325-11CE-BFC1-08002BE10318}

So mache ich das in meinem SystemInfo.

Edit : Sogar das Treiberdatum bekommst Du über diesen Registryschlüssel.

Genau das habe ich gesucht.

Habs jetzt hinbekommen... Wäre toll wenns jemand noch unter w2k testen könnte... oder auch auf xp...

> Bei mir habe ich festgestellt, dass die WinAPI funktion GetAdaptersInfo z.B ein AdapterName und AdapterDescription liefert... Bei Adapter Desc erhalte ich z.B:
Intel(R) 82566DM Gigabit Network Connection - Paketplaner-Miniport. So, und für AdapterName die passende GUID. Wenn ich über diese GUID in die Registry schauen gehe, sehe ich dann Werte wie TreiberDatum usw. und auch nochmals die Adapter Description. !Nur ist die ne andere als ich eben per GetAdaptersInfo erhalten habe - in meinem Beispiel:
Intel(R) 82566DM-2 Gigabit Network Connection.

Witzig, denn der Wert aus der Registry scheint zu stimmen: ipconfig /all ergibt das selbe Resultat und ebenso wenn ich auf den Adapter Rechtsklicke...

Wenn du kurz 5min Zeit hast kannste ja das test Programm mal bei dir laufen lassen und mir ein kurzes Feedback geben. THX

RWarnecke 6. Okt 2009 07:10

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Ab Windows XP erziehlst Du bessere Ergebnisse mit MSDN-Library durchsuchenGetAdapterAddresses als mit GetAdapterInfo. Hast Du auch mal die Werte mit meinem SystemInfo vergliechen ?

cherry 6. Okt 2009 07:18

Re: Netzwerkkarten Info - inkl. Treiberinfo
 
Zitat:

Zitat von RWarnecke
Ab Windows XP erziehlst Du bessere Ergebnisse mit MSDN-Library durchsuchenGetAdapterAddresses als mit GetAdapterInfo.

Das werde ich bei Gelegenheit mal überprüfen... ;-)

Zitat:

Zitat von RWarnecke
Hast Du auch mal die Werte mit meinem SystemInfo vergliechen ?

Jep. Bei deinem Tool wird !nicht! dieselbe AdapterDesc angezeigt wie ipconfig oder Netzwerk->LAN Verbindung X->Rechtsklick->Eigenschaften. Dies trifft für meinen PC zu, bei dem ich in der letzten Woche ca. 20mal den Netzwerktreiber aktualisiert habe... :stupid:

Ich nehm jetzt einfach die GUID (AdapterName) per GetAdaptersInfo und die restlichen Werte inkl. DriverDesc hole ich über die Registry raus. So scheints zu klappen.


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