获取本机MAC地址方法一: function MacAddress: string; var Lib: Cardinal; Func: function(GUID: PGUID): Longint; stdcall; GUID1, GUID2: TGUID; begin Result := ''; Lib := LoadLibrary('rpcrt4.dll'); if Lib <> 0 then begin if Win32Platform <>VER_PLATFORM_WIN32_NT then @Func := GetProcAddress(Lib, 'UuidCreate') else @Func := GetProcAddress(Lib, 'UuidCreateSequential'); if Assigned(Func) then begin if (Func(@GUID1) = 0) and (Func(@GUID2) = 0) and (GUID1.D4[2] = GUID2.D4[2]) and (GUID1.D4[3] = GUID2.D4[3]) and (GUID1.D4[4] = GUID2.D4[4]) and (GUID1.D4[5] = GUID2.D4[5]) and (GUID1.D4[6] = GUID2.D4[6]) and (GUID1.D4[7] = GUID2.D4[7]) then begin Result := IntToHex(GUID1.D4[2], 2) + '-' + IntToHex(GUID1.D4[3], 2) + '-' + IntToHex(GUID1.D4[4], 2) + '-' + IntToHex(GUID1.D4[5], 2) + '-' + IntToHex(GUID1.D4[6], 2) + '-' + IntToHex(GUID1.D4[7], 2); end; end; FreeLibrary(Lib); end; end;获得本机MAC地址方法二: 在delphi的nb30.pas单元中,包含了对netbios协议的完全支持,在该单元中定义了一个名为netbios的函数,通过该函数就能够得到本机的MAC地址. function GetNetBIOSAddress : string; var ncb : TNCB; status : TAdapterStatus; lanenum : TLanaEnum; procedure ResetAdapter (num : char); begin fillchar(ncb,sizeof(ncb),0); ncb.ncb_command:=char(NCBRESET); ncb.ncb_lana_num:=num; Netbios(@ncb); end; var i:integer; lanNum : char; address : record part1 : Longint; part2 : Word; end absolute status; begin Result:=''; fillchar(ncb,sizeof(ncb),0); ncb.ncb_command:=char(NCBENUM); ncb.ncb_buffer:=@lanenum; ncb.ncb_length:=sizeof(lanenum); Netbios(@ncb); if lanenum.length=#0 then exit; lanNum:=lanenum.lana[0]; ResetAdapter(lanNum); fillchar(ncb,sizeof(ncb),0); ncb.ncb_command:=char(NCBASTAT); ncb.ncb_lana_num:=lanNum; ncb.ncb_callname[0]:='*'; ncb.ncb_buffer:=@status; ncb.ncb_length:=sizeof(status); Netbios(@ncb); ResetAdapter(lanNum); for i:=0 to 5 do begin result:=result+inttoHex(integer(Status.adapter_address[i]),2); if (i<5) then result:=result+'-'; end; end;