تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الحصول على سيريال المادربورد
#1
كود :
function  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;

او هذا باستخدام WMI Win32_BaseBoard Class
تحتاج الى جلب المكتبة Microsoft WMIScripting 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.

او هذا باستخدام OLEVariant  IBindCtx Interface and 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.
الرد }}}
تم الشكر بواسطة: asemshahen5


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم