AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi MAC von echter Netzwerkkarte finden?
Thema durchsuchen
Ansicht
Themen-Optionen

MAC von echter Netzwerkkarte finden?

Ein Thema von SearchBot · begonnen am 1. Apr 2007 · letzter Beitrag vom 27. Apr 2007
Antwort Antwort
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
313 Beiträge
 
Delphi 12 Athens
 
#1

MAC von echter Netzwerkkarte finden?

  Alt 1. Apr 2007, 02:15
Hallo,
mit den Indy-Komponenten bekomme ich die MAC-Adresse raus.
Dummerweise von allen Netzwerkkarten, also auch von virtuellen.

Ich möchte aber nur diejenige, die auch dann vorhanden ist, wenn keine USB/PCMCIA oder ähnliche entfernbare Netzwerkadapter angeschlossen werden (oder gar nur Treiber/Dummykarten/VirtualPC/Machine-"Karten"). Also nur genau die Karte/chip, die fest eingebaut ist/auf Mainboard integriert ist.

Dabei ist mit aufgefallen, daß diese einen IRQ hat, alle anderen nicht (?).
Also müßte ich prüfen, ob die Netzwerkkarte, zu der ich die MAC habe, einen IRQ besitzt.

Nur, wie bekomme ich das heraus??
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#2

Re: MAC von echter Netzwerkkarte finden?

  Alt 1. Apr 2007, 10:30
Delphi-Quellcode:
// retrieve System MAC Addresses via WMI
//

const
   // define used constants
   WMI_LOCAL_COMPUTER = '.';
   WMI_SYSTEM_NAMESPACE = 'root\CIMV2';
   WMI_CLASS_NIC = 'Win32_NetworkAdapter';
   WMI_ATTRIB_MAC = 'MACAddress';
//function getSystemMACAddresses:String;
procedure getSystemMACAddresses(MAC: TStringlist);
var
   l_WMILocator: ISWbemLocator; // Locator, gets Services
   l_WMIServices: ISWbemServices; // Services, gets Object Definitions
   l_WMIObjectDefinition: ISWbemObject; // Definition, gets Set of Objetcs
   l_WMIObjectSet: SWbemObjectSet; // ObjectSet, gets Enum over Instances
   l_WMIObjectInstances: IEnumVariant; // Enum of Instances, gets Object
   l_WMIObject: ISWbemObject; // Object, gets Sets of his properties
   l_WMIPropertySet: ISWbemPropertySet; // PropertySet, gets single property
   l_WMIProperty: ISWbemProperty; // Property, gets Value

   l_TempObj: OleVariant; // temporary used values
   l_ObjValue: Cardinal;
   TmpMAC : TStringList;
begin
   // create the return object
   TmpMAC := TStringList.Create;

   // retrieve object enum through WMI classes
   l_WMILocator := CoSWbemLocator.Create;
   l_WMIServices := L_WMILocator.ConnectServer(WMI_LOCAL_COMPUTER, WMI_SYSTEM_NAMESPACE, '', '', '', '', 0, nil);
   l_WMIObjectDefinition := l_WMIServices.Get(WMI_CLASS_NIC, wbemFlagUseAmendedQualifiers, nil);
   l_WMIObjectSet := l_WMIObjectDefinition.Instances_(0, nil);
   l_WMIObjectInstances := (l_WMIObjectSet._NewEnum) as IEnumVariant;

   // iterate through enum values (WbemObjects) and get the property values
   while (l_WMIObjectInstances.Next(1, l_TempObj, l_ObjValue) = S_OK) do
   begin
      l_WMIObject:= IUnknown(l_TempObj) as SWBemObject;

      l_WMIPropertySet := l_WMIObject.Properties_;
      l_WMIProperty := l_WMIPropertySet.Item(WMI_ATTRIB_MAC, 0);

      if not VarIsNull(l_WMIProperty.Get_Value) then
         TmpMAC.Add(l_WMIProperty.Get_Value);
   end;
   TmpMAC.Sort;
    MAC.Assign(TmpMAC);
    TmpMAC.Free;
end;
aufruf so
getSystemMACAddresses(TStringList(memo1.lines));
Marcel
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
313 Beiträge
 
Delphi 12 Athens
 
#3

Re: MAC von echter Netzwerkkarte finden?

  Alt 2. Apr 2007, 23:06
Ja,
also erst mal danke für diesen Code. Da wär ich Leben ja nie drauf gekommen. Sieht alles sehr kryptisch aus. Ich werde es testen.

So wie ich den Code verstehe, legt es eine Liste der Netzwerkadapter an. Dadurch weiß ich aber immernochnicht, welche davon einen IRQ hat?!

Also bräuchte ich noch irgendwie eine Möglichkeit, wie im Geräte-Manager eine Liste der IRQs und der dazugehörenden Geräte herauszufinden und dann die beiden Listen miteinander zu vergleichen, um die Echte zu finden..., oder nicht?! *grübel*
  Mit Zitat antworten Zitat
ich.online

Registriert seit: 22. Jun 2006
12 Beiträge
 
Delphi 6 Professional
 
#4

Re: MAC von echter Netzwerkkarte finden?

  Alt 27. Apr 2007, 14:17
Hallo,

welche Komponenten sind das?

Gruß

K.-D.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

Re: MAC von echter Netzwerkkarte finden?

  Alt 27. Apr 2007, 14:19
Keine Komponenten .. es sind ActiveX bzw ComObj Methoden.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
ich.online

Registriert seit: 22. Jun 2006
12 Beiträge
 
Delphi 6 Professional
 
#6

Re: MAC von echter Netzwerkkarte finden?

  Alt 27. Apr 2007, 14:31
Hallo,

gibt es denn keine Möglichkeit mit vcl Komponenten die MAC Adressen zu ermitteln?

Ich habe code gefunden mit der unit NB30. Da wird aber immer nur die erste MAC angezeigt. Funktioniert auch unter Wine einwandfrei. Da ich das für einen Kopierschutz verwenden möchte, ist es schlecht, wenn ich dann die MAC von einer beweglichen Karte habe (Notebook). Bei meinem Notebook ist es so, dass die erste Karte Wireless ist.

Gruß

K.-D.
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:31 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