Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Einzelne MAC-Adressen auslesen (https://www.delphipraxis.net/90332-einzelne-mac-adressen-auslesen.html)

RWarnecke 15. Apr 2007 15:24


Einzelne MAC-Adressen auslesen
 
Hallo,

ich lese die einzelnen Infos zu den Netzwerkadapter mit einer Funktions aus, basierend auf dem Sourcecode aus diesem Beitrag. Ich habe auch schon die verschiedenen Beispiele durchforstet um eine MAC-Adresse auszulesen. Nur sehe ich im Moment keine Möglichkeit die MAC-Adresse von einer bestimmten Netzwerkkarte auszulesen, sei es über den Index oder über die Beschreibung.

Ich möchte wenn möglich kein WMI nutzen oder das Ergebnis eines ipconfig /all - Befehls parsen.

Wie kann ich das ganze realisieren ?

mkinzler 15. Apr 2007 15:30

Re: Einzelne MAC-Adressen auslesen
 
Schau dir mal die Unit JvSysUtils aud der JCL an.

CCRDude 15. Apr 2007 16:23

Re: Einzelne MAC-Adressen auslesen
 
Btw: es ist JclSysInfo, nicht JcSysUtils ;)

mkinzler 15. Apr 2007 16:35

Re: Einzelne MAC-Adressen auslesen
 
Zitat:

Zitat von CCRDude
Btw: es ist JclSysInfo, nicht JcSysUtils ;)

Natürlich.

RWarnecke 15. Apr 2007 18:27

Re: Einzelne MAC-Adressen auslesen
 
Ich habe mir mal die Unit angeschaut. Aber es ist doch das gleiche, welches ich hier im Forum finde oder bei den Schweizern finde. Ich kann aber nicht sagen, dass ich nur die MAC-Adresse von meiner LAN-Verbindung 2 haben möchte und nicht die MAC-Adressen von meinen virtuellen Netzwerkkarten von VMWare.

Woran kann ich jetzt in dieser Procedure erkennen, von welcher Netzwerkkarte (LAN-Verbindung) die MAC-Adresse ausgelesen wird ?

CCRDude 15. Apr 2007 18:36

Re: Einzelne MAC-Adressen auslesen
 
Na aber diese Routinen sind so ziemlich das sauberste, was mir bisher untergekommen ist. Wir wärs, wenn Du einfach mal in den Code reinschaust? Dort findest Du in AStat alles benötigte.

Natürlich kannst du nicht einfach sagen "ich will nur meine", woher soll irgend ein Code bitte wissen, welche Du willst? Gegenüber Windows sind schließlich alle "gleichberechtigt". Und über die Beschreibung kannst Du es mit diesem Code tun - wenn Du Dir die Mühe gibst, diese paar Zeilen zu verstehen :)

RWarnecke 15. Apr 2007 18:53

Re: Einzelne MAC-Adressen auslesen
 
Erstmal, ich schaue mir schon den Sourcecode an. Nur wenn ich den Sourcecode nicht verstehe, kann ich ja nachfragen, wie ich mein Vorhaben realisieren kann. Ich weiß, dass jede Netzwerkkarte eine Indexnummer hat. Diese Nummer wird auf einem Rechner nicht zweimal vergeben. So glaube ich zumindest. Diese Indexnummer zu meiner Netzwerkkarte kann ich bestimmen. Nun möchte ich anhand dieser Indexnummer die MAC-Adresse auslesen und das schaffe ich nicht.
Wenn mein Weg über die Indexnummer falsch sein sollte, dann zeigt mir bitte einen anderen Weg.

Und nochmal, ich bekomme weiterhin immer alle drei MAC-Adressen von meinen Netzwerkkarten angezeigt und kann diese nicht selektieren.

CCRDude 15. Apr 2007 19:22

Re: Einzelne MAC-Adressen auslesen
 
Du schriebst nur eingangs "sei es über den Index oder über die Beschreibung.", und das AStat-record enthält einen sehr bezeichnenes Array namens NameBuff... tschuldigung, vielleicht war das für mich beim Überfliegen auch nur so offensichtlich, weil ich den Code schon kannte und ich, sobald ich ne Variable für Namen sehe, dort zuerstmal nen Breakpoint gesetzt und reingeschaut hätte ;)

Also nochmal als etwas konkreterer Tipp:
1. Schau nach, wo dort in GetMacAddressesNetBios die "Ausgabe" getätigt wird, also das "Addresses.Add".
2. Identifiziere, woher die Information kommt, hier die Variable Adapter vom Typ AStat.
3. Schau Dir den Typ AStat an, der enthält einen NameBuff.

Evtl. kannst Du ja damit eine Bedingung für die Beschreibung mit in die Abfrage eine Zeile über der aus 1 einbauen :)

RWarnecke 15. Apr 2007 21:07

Re: Einzelne MAC-Adressen auslesen
 
Ich habe jetzt das Problem gelöst. Die MAC-Adressen aus der StringList werden umgekehrt aufgelistet gegenüber der Netzwerkkartenliste aus der Funktion. somit drehe ich die Stringlist einfach rum. Damit habe ich auch meinen gewünschten Effekt.

RWarnecke 17. Apr 2007 13:10

Re: Einzelne MAC-Adressen auslesen
 
Ich habe aber nun ein Problem, wenn eine Netzwerkkarte keinen Connect hat, dann wird auch keine MAC-Adresse ausgelesen. Wie kann ich das jetzt noch abfangen ?

RWarnecke 19. Apr 2007 17:00

Re: Einzelne MAC-Adressen auslesen
 
Hat keiner einer Idee, wie ich das auslesen der MAC-Adresse trotzdem machen kann, auch dann wenn die Karte keine Netzwerkverbindung hat ?

Klaus01 19. Apr 2007 17:41

Re: Einzelne MAC-Adressen auslesen
 
Haben die Interfaces eine fixe IP Adresse oder beziehen sie diese von einem DHCP Server?

Da ich nicht weiß mit welcher Funktion Du arbeitest, es gibt einige die holen sich
die IP Adresse und ermitteln anhand der IP die MAC Adresse.

Grüße
Klaus

RWarnecke 19. Apr 2007 18:59

Re: Einzelne MAC-Adressen auslesen
 
Zitat:

Zitat von Klaus01
Haben die Interfaces eine fixe IP Adresse oder beziehen sie diese von einem DHCP Server?

Es soll hauptsächlich für DHCP gehen.
Zitat:

Zitat von Klaus01
Da ich nicht weiß mit welcher Funktion Du arbeitest, es gibt einige die holen sich
die IP Adresse und ermitteln anhand der IP die MAC Adresse.

Ich benutze die Funktion GetMACAddresses aus der Unit JclSysInfo. Desweiteren nutze ich noch die Funktion aus diesem Beitrag, welche ich leicht abgeändert habe um nochmehr Informationen zum Interface zu erhalten. In dieser abgeänderten Funktion aus dem Beitrag, habe ich eine bestimmte reinfolge, wie die Interfaces ausgelesen werden. Die Funktion GetMACAddresses aus der Unit JclSysInfo, gibt die Liste der Netzwerkkarten genau anders herum aus. Damit habe ich dann eine eindeutige Zuordnung der MAC-Adressen. Nur leider funktioniert die Funktion GetMACAddresses, wenn das Interface auch einen Connect hat.

Klaus01 19. Apr 2007 20:01

Re: Einzelne MAC-Adressen auslesen
 
Das schein ein Problem zu sein wenn auf dem Interface das NetBios Protokol unten ist.
Hier ist noch ein Link mit verschiedenen Methoden die Mac Adresse zu ermitteln.

Ich habe noch im Netz gelesen, dass die JclSysInfo versucht die MAC Adresse über Netbios und SNMP auszulesen.

Grüße
Klaus


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