Серийный номер мп и жд достаем из WMI если данная служка будет отключена мы ничего не получим
Использовать так:
Код:
uses
ActiveX,
Variants,
SysUtils,
ComObj;
type
AR = array[0..2] of string;
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;
function GetMotherBoardSerial: ar;
var
objWMIService: OLEVariant;
colItems: OLEVariant;
colItem: OLEVariant;
oEnum: IEnumvariant;
iValue: LongWord;
mb, hdd: string;
begin
result[1] := 'N/A';
result[2] := 'N/A';
try
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[1] := VarToStr(colItem.SerialNumber);
colItems := objWMIService.ExecQuery('SELECT SerialNumber FROM win32_physicalmedia ', 'WQL', 0);
oEnum := IUnknown(colItems._NewEnum) as IEnumVariant;
if oEnum.Next(1, colItem, iValue) = 0 then
Result[2] := VarToStr(colItem.SerialNumber);
finally
end;
end;
Код:
begin
CoInitialize(nil);
Writeln('Serial MotherBoard ' + GetMotherBoardSerial[1]);
Writeln('Serial Hdd ' + GetMotherBoardSerial[2]);
Readln;
CoUninitialize;
end.