MAC rauslesen und ändern
-
Hallo!
Ich wollte ein kleines Tool schreiben, welches meine aktuelle MAC-Adresse ausliest und bei Wunsch ändert.
Aber wie? Jemand eine Idee?
-
So ist eine Funktion für das Auslesen
#include <nb30.h> bool __fastcall TForm1::ReadMacAddr(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); } }Das Auslesen machst du dann so:
String a; ReadMacAddr(a);Hoffe konnte dir helfen
-
^^und mit dem ändern ist das so'ne sache. bei mancher hardware geht's, bei anderer nicht. mit 'netbios'-befehlen wirds vermutlich eh nix.

-
http://devices.natetrue.com/macshift/
Sourcen und Binary verfügbar.
Simon
-
Die Lösung von mac_adrr würde ich nicht nehmen.
[Netbios is not available for use on Windows Vista, Windows Server 2008, and subsequent versions of the operating system]
Ich glaube GetAdaptersInfo aus der IP Helper API ist die beste Lösung um an die MAC-Adresse zu kommen.