Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как получить информацию о BIOS в Windows NT, 2000, XP

Delphi , ОС и Железо , BIOS

Как получить информацию о BIOS в Windows NT, 2000, XP


В NT/2000/XP не получится прочитать значения прямо из BIOS, однако, ничего не мешает нам считать нужные значения из реестра.


procedure TBIOSInfo.GetRegInfoWinNT;
var
  Registryv: TRegistry;
  RegPath: string;
  sl: TStrings;
begin
  Params.Clear;
  RegPath := '\HARDWARE\DESCRIPTION\System';
  registryv := tregistry.Create;
  registryv.rootkey := HKEY_LOCAL_MACHINE;
  sl := nil;
  try
    registryv.Openkey(RegPath, false);
    ShowMessage('BIOS Date: ' + RegistryV.ReadString('SystemBiosDate'));
    sl := ReadMultirowKey(RegistryV, 'SystemBiosVersion');
    ShowMessage('BIOS Version: ' + sl.Text);
  except
  end;
  Registryv.Free;
  if Assigned(sl) then
    sl.Free;
end;

На всякий пожарный:


// следующий метод получает многострочные значения из реестра
// и преобразует их в TStringlist

function ReadMultirowKey(reg: TRegistry; Key: string): TStrings;
const
  bufsize = 100;
var
  i: integer;
  s1: string;
  sl: TStringList;
  bin: array[1..bufsize] of char;
begin
  try
    result := nil;
    sl := nil;
    sl := TStringList.Create;
    if not Assigned(reg) then
      raise Exception.Create('TRegistry object not assigned.');
    FillChar(bin, bufsize, #0);
    reg.ReadBinaryData(Key, bin, bufsize);
    i := 1;
    s1 := '';
    while i < bufsize do
    begin
      if ord(bin[i]) >= 32 then
        s1 := s1 + bin[i]
      else
      begin
        if Length(s1) > 0 then
        begin
          sl.Add(s1);
          s1 := '';
        end;
      end;
      inc(i);
    end;
    result := sl;
  except
    sl.Free;
    raise;
  end;
end;

Код - часть приложения Delphi, которое извлекает информацию о BIOS из реестра Windows в операционных системах Windows NT, 2000 и XP.

Процедура GetRegInfoWinNT читает значения из реестра для получения даты и версии BIOS. Путь к реестру - \HARDWARE\DESCRIPTION\System. Она использует компонент TRegistry для доступа к реестру и чтения значений.

Код выполняет следующие действия:

  1. Очищает параметры.
  2. Устанавливает путь к реестру в виде \HARDWARE\DESCRIPTION\System.
  3. Создает новый экземпляр TRegistry и устанавливает корневой ключ в HKEY_LOCAL_MACHINE.
  4. Открывает указанный реестровый ключ с помощью OpenKey. Если ключ не существует, то будет выброшено исключение.
  5. Читает значение SystemBiosDate из реестра и отображает его в виде сообщения.
  6. Вызывает функцию ReadMultirowKey, чтобы прочитать значение SystemBiosVersion, которое считается мультистрочным значением (списком строк).
  7. Отображает версию BIOS в виде сообщения.
  8. Освобождает объект реестра и список строк.

Функция ReadMultirowKey читает мультистрочное значение из реестра и возвращает его в виде TStringList. Она выполняет следующие действия:

  1. Создает новый экземпляр TStringList.
  2. Читает бинарные данные из реестра с помощью ReadBinaryData.
  3. Перебирает бинарные данные, парсинг каждой строки.
  4. Добавляет каждую парсированную строку в TStringList с помощью Add.
  5. Возвращает TStringList.

Обратите внимание, что код предполагает, что дата и версия BIOS хранятся в реестре с указанными путями и значениями. Если эти значения не существуют или имеют другие пути, то код может выбросить исключения или возвращать неправильные результаты.

Также помните, что доступ к реестру может быть чувствительным операцией, поскольку он позволяет читать и записывать настройки системы. Этот код должен использоваться только для легитимных целей и должен быть тщательно тестирован для обеспечения его корректности и безопасности.

В Windows NT, 2000 и XP информацию о BIOS можно получить, считав нужные значения из реестра.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: BIOS ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 19:32:32/0.00347900390625/0