AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke MAC Adresse ermitteln, auch wenn keine Netzwerkverbindung besteht
Thema durchsuchen
Ansicht
Themen-Optionen

MAC Adresse ermitteln, auch wenn keine Netzwerkverbindung besteht

Ein Thema von Graw · begonnen am 12. Dez 2022 · letzter Beitrag vom 12. Dez 2022
Antwort Antwort
Graw

Registriert seit: 26. Apr 2017
77 Beiträge
 
Delphi 11 Alexandria
 
#1

MAC Adresse ermitteln, auch wenn keine Netzwerkverbindung besteht

  Alt 12. Dez 2022, 09:33
Hallo,

ich habe hier im Forum folgenden Thread genutzt um die aktuelle MAC Adresse herrauszufinden:
https://www.delphipraxis.net/113-mac...ermitteln.html

Allerdings wird mir hier nur die MAC Adresse der aktuell aktiven Netzwerkverbindung ausgegeben.
Besteht keine Netzwerkverbindung bekommt man als Result 'mac not found'.

Ist es möglich auch nicht aktive MAC Adressen auszulesen?

Vielen Dank.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: MAC Adresse ermitteln, auch wenn keine Netzwerkverbindung besteht

  Alt 12. Dez 2022, 09:56
Meinst Du so etwas?
Delphi-Quellcode:
uses System.Classes, Winapi.Windows, System.SysUtils, IpHlpApi, IpTypes;

procedure EnumMacAddresses(const Dest: TStrings);
const
  AF_UNSPEC = 0;
  AF_INET = 2;
  AF_INET6 = 23;
  IF_TYPE_ETHERNET_CSMACD = 6;
var
  AdapterAddresses: PIP_ADAPTER_ADDRESSES;
  BufSize: ULONG;
  i: Cardinal;
  SL: TStringList;
  ResultList: TStringList;
  tmp: PIP_ADAPTER_ADDRESSES;
  MaxLen: integer;
begin
  Assert(Assigned(Dest), 'Keine Empfängerliste für die MAC-Adressen übergeben');
  Dest.BeginUpdate;
  try
    ResultList := nil;
    BufSize := SizeOf(IP_ADAPTER_ADDRESSES);
    GetMem(AdapterAddresses, BufSize);
    BufSize := 0;
    SL := TStringList.Create;
    SL.Delimiter := '-';
    SL.StrictDelimiter := true;
    try
      ResultList := TStringList.Create;
      ResultList.Sorted := true;
      ResultList.Duplicates := dupIgnore;
      if GetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_SKIP_UNICAST or
        GAA_FLAG_SKIP_ANYCAST or GAA_FLAG_SKIP_MULTICAST or
        GAA_FLAG_SKIP_DNS_SERVER, nil, AdapterAddresses, @BufSize) = ERROR_BUFFER_OVERFLOW
      then
        begin
          ReAllocMem(AdapterAddresses, BufSize);
          if GetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_SKIP_UNICAST or
            GAA_FLAG_SKIP_ANYCAST or GAA_FLAG_SKIP_MULTICAST or
            GAA_FLAG_SKIP_DNS_SERVER, nil, AdapterAddresses, @BufSize) = ERROR_SUCCESS
          then
            begin
              tmp := AdapterAddresses;
              while Assigned(tmp) do
                begin
                  SL.Clear;
                  try
                    MaxLen := tmp^.PhysicalAddressLength;
                    if (MaxLen <= MAX_ADAPTER_ADDRESS_LENGTH) and (MaxLen > 0)
                    then
                      for i := 0 to MaxLen - 1 do
                        SL.Add(Format('%.2x', [tmp^.PhysicalAddress[i]]));
                  except
                    SL.Clear;
                  end;
                  if SL.Count > 0 then
                    ResultList.Add(SL.DelimitedText);
                  tmp := tmp^.Next;
                end;
            end;
        end;
      Dest.Assign(ResultList);
    finally
      FreeMem(AdapterAddresses);
      SL.Free;
      ResultList.Free;
    end;
  finally
    Dest.EndUpdate;
  end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Graw

Registriert seit: 26. Apr 2017
77 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: MAC Adresse ermitteln, auch wenn keine Netzwerkverbindung besteht

  Alt 12. Dez 2022, 10:09
Perfekt,

vielen Dank.
  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 23:41 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