Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi MAC ermitteln (https://www.delphipraxis.net/22775-mac-ermitteln.html)

Masterof 23. Mai 2004 12:42


MAC ermitteln
 
Hallo!!

Wie ermittele ich am besten die Mac-Adresse eines Rechners?
Oder bzw welche Dll muss ich ensprechen?

MfG Master :gruebel:

Phoenix 23. Mai 2004 12:47

Re: MAC ermitteln
 
Bemüh mal die Suche in der Hier im Forum suchenMAC Adresse ermitteln und schau Dir meinen oder Sakuras Beitrag zur Code Library an.

Sharky 23. Mai 2004 12:48

Re: MAC ermitteln
 
Hai Masterof,

die Foren-Suche hat mir z.B. diesen Beitrag in der Code-Library gezeigt.

Masterof 23. Mai 2004 12:55

Re: MAC ermitteln
 
Hallo!!

Ich habe in meinen Büchern nochmal geschaut, und bin auf dieses gestossen. Das ist etwas einfacher.

Source:
Delphi-Quellcode:
Type
  TGUID = Record
   a ,b, d, m, s : word;
   Mac : Array[1..16] of byte;
end;

function CoCreateGuid(var GUID : TGUID): HResult; stdcall;
far external 'OLE32.dll';

function GetMacAdress : string;
var g: TGUID;
    i: integer;
begin
CocreateGuid(g);
result := '';
for i:= 1 to 6 do
Result := Result + IntToHex(g.Mac[i], 2) + '-';
Result[length(result)] := #0;
end;




procedure Tfrmmain.btmacClick(Sender: TObject);
begin
lblmac.Caption:= GetMacAdress;
end;

Danke!

MfG Masterof

[edit=Sharky]Delphi-Tags gesetzt. Bitte beim nächsten mal selber machen ;-) Mfg, Sharky[/edit]

Phoenix 23. Mai 2004 13:10

Re: MAC ermitteln
 
Das hat nur den Nachteil, das das Errgebnis nicht mehr stimmt, wenn der Rechner mehrere Netzwerkkarten oder keine hat. Bei keiner wird der Wert der da rauskommt halt irgendwie Berechnet und wenn man mehrere hat kommt da auch nix Sinnvolles bei raus, weil alle Adressen irgendwie zusammengeschustert werden.

The-X 23. Mai 2004 13:24

Re: MAC ermitteln
 
Damit ermittelst du aber nicht die Mac-Adresse eines Netzwerkadapters :gruebel:
mit CoCreateGUID erzeugst du siehe SDK
Zitat:

Zitat von SDK
CoCreateGuid
------------
Creates a GUID, a unique 128-bit integer used for CLSIDs and interface identifiers.
------------
The CoCreateGuid function calls UuidCreate (documented in the RPC Programmer's Guide and Reference), which creates a GUID, a globally unique 128-bit integer used for CLSIDs and interface IDs. To a very high degree of certainty, this function returns a unique value - no other invocation, on the same or any other system (networked or not) should return the same value.

zudem ist mir aufgefallen, das bei Mehrmaligem Aufruf dieser Funktion das höchstwertige Byte inkrementiert wird, was somit nicht der MAC entsprechen kann :!: :!: :!:

Phoenix 23. Mai 2004 13:41

Re: MAC ermitteln
 
Die MAC(s), sofern vorhanden, werden da nur mit reingerechnet. Und wenn man nicht die ganze GUID nimmt sondern nur den MAC-Teil hat man in 99% aller Fälle glück und erwischt tatsächlich die eigene MAC, sofern man nur eine Karte im System betreibt.

Wie gesagt: Der Weg über die WMI ist sicherer. Damit bekommt man zu 100% die Info, ob man eine Netzwerkkarte hat und weren MAC's - und kann die sogar den einzelnen Interfaces korrekt zuordnen.

Christian Seehase 23. Mai 2004 13:57

Re: MAC ermitteln
 
Moin Phoenix,

Zitat:

Zitat von Phoenix
...sondern nur den MAC-Teil hat man in 99% aller Fälle glück und erwischt tatsächlich die eigene MAC...

welchen MAC-Teil?

Die Funktion CoCreateGuid liefert ja einen Global Unique Identifier zurück, der unabhängig davon ist ob überhaupt eine Netzwerkkarte im Rechner steckt.

Phoenix 23. Mai 2004 15:04

Re: MAC ermitteln
 
Ein Teil des GUID ist die MAC-Adresse (sofern genau eine Karte vorhanden ist).
Aber wie gesagt: Das ist so ziemlich alles ausser zuverlässig.

Christian Seehase 23. Mai 2004 15:36

Re: MAC ermitteln
 
Moin Phoenix,

und welcher Teil der GUID soll das sein?
Ich habe genau eine Netzwerkkarte im Rechner und erhalte keine GUID, die auch nur Teile der MAC-Adresse enthält.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:24 Uhr.
Seite 1 von 2  1 2      

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