Получаем S/n Материнской Платы И Жесткого Диска

  • Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
1 Мар 2015
1,092
210
155
VK
#1
Серийный номер мп и жд достаем из 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.