delphi serial-number motherboard

¿Cómo obtener la identificación de la placa base o el número de serie en Delphi?



serial-number motherboard (2)

¿Cómo obtengo la ID de la placa madre o el número de serie del código Delphi?

¿Hay algún código de ejemplo o artículos que pueda ver?


intente usar la clase WMI Win32_BaseBoard .

ver muestras de tesis:

Opción 1) antes de ejecutar, necesita importar la Microsoft WMIScripting Library desde Component -> Import Component y luego seleccionar Import type library

program GetWMI_MotherBoardInfo; {$APPTYPE CONSOLE} uses ActiveX, Variants, SysUtils, WbemScripting_TLB in ''../../../Documents/RAD Studio/5.0/Imports/WbemScripting_TLB.pas'';// Function GetMotherBoardSerial:string; var WMIServices : ISWbemServices; Root : ISWbemObjectSet; Item : Variant; begin WMIServices := CoSWbemLocator.Create.ConnectServer(''.'', ''root/cimv2'','''', '''', '''', '''', 0, nil); Root := WMIServices.ExecQuery(''Select SerialNumber From Win32_BaseBoard'',''WQL'', 0, nil); Item := Root.ItemIndex(0); Result:=VarToStr(Item.SerialNumber); end; begin try CoInitialize(nil); Writeln(''Serial MotherBoard ''+GetMotherBoardSerial); Readln; CoUninitialize; except on E:Exception do Begin CoUninitialize; Writeln(E.Classname, '': '', E.Message); Readln; End; end; end.

Opción 2) usando OLEVariant , IBindCtx Interface e IMoniker Interface

program GetWMI_MotherBoardSerial; {$APPTYPE CONSOLE} uses SysUtils ,ActiveX ,ComObj ,Variants; function GetMotherBoardSerial:String; var objWMIService : OLEVariant; colItems : OLEVariant; colItem : OLEVariant; oEnum : IEnumvariant; iValue : LongWord; function GetWMIObject(const objectName: String): IDispatch; var chEaten: Integer; BindCtx: IBindCtx; Moniker: IMoniker; begin OleCheck(CreateBindCtx(0, bindCtx)); OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten, Moniker)); OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result)); end; begin Result:=''''; objWMIService := GetWMIObject(''winmgmts://localhost/root/cimv2''); colItems := objWMIService.ExecQuery(''SELECT SerialNumber FROM Win32_BaseBoard'',''WQL'',0); oEnum := IUnknown(colItems._NewEnum) as IEnumVariant; if oEnum.Next(1, colItem, iValue) = 0 then Result:=VarToStr(colItem.SerialNumber); end; begin try CoInitialize(nil); try Writeln(''Serial MotherBoard ''+GetMotherBoardSerial); Readln; finally CoUninitialize; end; except on E:Exception do Begin Writeln(E.Classname, '': '', E.Message); Readln; End; end; end.


Tengo otra solución:

function TForm1.GetSerialMotherBoard: String; var a, b, c, d: LongWord; begin asm push EAX push EBX push ECX push EDX mov eax, 1 db $0F, $A2 mov a, EAX mov b, EBX mov c, ECX mov d, EDX pop EDX pop ECX pop EBX pop EAX end; result := inttohex(a, 8) + ''-'' + inttohex(b, 8) + ''-'' + inttohex(c, 8) + ''-'' + inttohex(d, 8); end;

Saludos cordiales Wellington