MAC-Adresse auslesen, wenn Netzwerkkabel nicht gesteckt ist.
-
Mit dem unstenstehenden Sourcecode ermittle ich die MAC-Adresse des Netzwerkadapters.
Wenn ein Netzwerkkabel gesteckt ist, funktioniert dies auch gut.
Wenn kein Netzwerkkabel gesteckt ist, kann die MAC-Adresse nicht mehr ermittelt werden.
Gibt es in diesem fall eine andere Möglichkeit, die MAC-Adresse zu ermitteln?#include <nb30.h> bool __fastcall THauptForm::bReadMacAddr(AnsiString &MacAddr) { NCB ncb; UCHAR RetCode; char NetName[50]; struct { ADAPTER_STATUS adapt; NAME_BUFFER NameBuff [30]; } Adapter; // Adapter Reset memset(&ncb, 0, sizeof(ncb)); ncb.ncb_command=NCBRESET; ncb.ncb_lana_num=0; if((RetCode=Netbios(&ncb))!=0) { MacAddr.sprintf("Fehler %d beim Reset des Adapters", RetCode); return(false); } // Adapter Status memset(&ncb, 0, sizeof(ncb)); ncb.ncb_command=NCBASTAT; ncb.ncb_lana_num=0; memset(ncb.ncb_callname, ' ', NCBNAMSZ); *(ncb.ncb_callname)='*'; ncb.ncb_buffer=(char*)&Adapter; ncb.ncb_length=sizeof(Adapter); if((RetCode=Netbios(&ncb))==0){ MacAddr.sprintf("%02X-%02X-%02X-%02X-%02X-%02X", Adapter.adapt.adapter_address[0], Adapter.adapt.adapter_address[1], Adapter.adapt.adapter_address[2], Adapter.adapt.adapter_address[3], Adapter.adapt.adapter_address[4], Adapter.adapt.adapter_address[5]); return(true); } else { MacAddr.sprintf("Fehler %d beim Bestimmen der MacAdrese", RetCode); return(false); } }
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Wenn ich mich recht entsinne, dann kann man die MAC auch über die Registry auslesen. Ob das eine saubere Lösung ist soll jeder selbst entscheiden...
Wo genau man das auslesen kann, weiss ich gerade nicht. Musst mal googlen...
-
Da bin ich bisher nicht fündig geworden.
-
Über WMI sollte es auch gehen: MACAddress aus Win32_NetworkAdapter
-