// следующий метод получает многострочные значения из реестра// и преобразует их в TStringlistfunction ReadMultirowKey(reg: TRegistry; Key: string): TStrings;
const
bufsize = 100;
var
i: integer;
s1: string;
sl: TStringList;
bin: array[1..bufsize] of char;
begintry
result := nil;
sl := nil;
sl := TStringList.Create;
ifnot Assigned(reg) thenraise Exception.Create('TRegistry object not assigned.');
FillChar(bin, bufsize, #0);
reg.ReadBinaryData(Key, bin, bufsize);
i := 1;
s1 := '';
while i < bufsize dobeginif ord(bin[i]) >= 32 then
s1 := s1 + bin[i]
elsebeginif Length(s1) > 0 thenbegin
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 для доступа к реестру и чтения значений.
Код выполняет следующие действия:
Очищает параметры.
Устанавливает путь к реестру в виде \HARDWARE\DESCRIPTION\System.
Создает новый экземпляр TRegistry и устанавливает корневой ключ в HKEY_LOCAL_MACHINE.
Открывает указанный реестровый ключ с помощью OpenKey. Если ключ не существует, то будет выброшено исключение.
Читает значение SystemBiosDate из реестра и отображает его в виде сообщения.
Вызывает функцию ReadMultirowKey, чтобы прочитать значение SystemBiosVersion, которое считается мультистрочным значением (списком строк).
Отображает версию BIOS в виде сообщения.
Освобождает объект реестра и список строк.
Функция ReadMultirowKey читает мультистрочное значение из реестра и возвращает его в виде TStringList. Она выполняет следующие действия:
Создает новый экземпляр TStringList.
Читает бинарные данные из реестра с помощью ReadBinaryData.
Перебирает бинарные данные, парсинг каждой строки.
Добавляет каждую парсированную строку в TStringList с помощью Add.
Возвращает TStringList.
Обратите внимание, что код предполагает, что дата и версия BIOS хранятся в реестре с указанными путями и значениями. Если эти значения не существуют или имеют другие пути, то код может выбросить исключения или возвращать неправильные результаты.
Также помните, что доступ к реестру может быть чувствительным операцией, поскольку он позволяет читать и записывать настройки системы. Этот код должен использоваться только для легитимных целей и должен быть тщательно тестирован для обеспечения его корректности и безопасности.
В Windows NT, 2000 и XP информацию о BIOS можно получить, считав нужные значения из реестра.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.