Имя пользователя:
Пароль:
 

Название темы: [решено] Инвентаризация
Показать сообщение отдельно

Новый участник


Сообщения: 13
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


Есть ещё предложение капать в сторону DMI/SMBIOS. Это таблицы разных типов (для процессора, модулей памяти, материнской платы и т.д.), которые содержат инфу об аппартных компонентах ПК. Для работы с DMI/SMBIOS есть WinAPI-функции, вроде GetSystemFirmwareTable, однако самый простой способ получить содержимое DMI - считать ветку из реестра, которая обновляется при каждом запуске Windows:

Код: Выделить весь код
type
  TRawSMBIOSData = packed record
    Used20CallingMode : Byte;
    SMBIOSMajorVersion : Byte;
    SMBIOSMinorVersion : Byte;
    DMIRevision : Byte;
    DataLength : DWORD;
    SMBIOS : array [0..5120] of Byte;
  end;
  
function ReadSMBIOSFromRegistry(var Buffer: TRawSMBIOSData): Boolean;
var
  Reg : TRegistry;
  dwResult : Dword;
begin
  Result:=False;
  Reg:=TRegistry.Create;
  Reg.RootKey:=HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('\SYSTEM\CurrentControlSet\Services\mssmbios\Data', False) then
    if Reg.ValueExists('SMBiosData') then
    try
      dwResult:=Reg.ReadBinaryData('SMBiosData',Buffer,SizeOf(Buffer));
      if dwResult <= SizeOf(Buffer) then Result:=True;
      finally
        Reg.Free;
    end;
end;
После чего потребуется разбор и анализ данных DMI согласно документации https://www.dmtf.org/standards/smbios

Отправлено: 17:38, 23-12-2016 | #14

Название темы: [решено] Инвентаризация