Blog. Just Blog

Как получить название производителя и версию BIOS

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Образ мышления: Assembler | Автор: ManHunter
Версия и производитель BIOS в реестре
Версия и производитель BIOS в реестре

Получение версии и названия производителя BIOS - не самая частая задача, но если эта тема вам все-таки интересна, то я расскажу, как это сделать. Для приложения самый простой способ, не требующий углубляться в дебри системы, это прочитать соответствующие данные из системного реестра. Нужная нам информация хранится в виде обычных текстовых строк в ключе HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS. При каждой перезагрузке системы данные в них перезаписываются актуальными значениями, а сами параметры закрыты от записи админскими правами доступа. А вот для чтения этих данных достаточно обычных пользовательских прав. Этим мы и воспользуемся.

Код простейший. Сперва определим в сегменте данных нужные нам пути реестра, названия параметров, а также переменные, необходимые для работы с реестром.
  1. reg_key db 'HARDWARE\DESCRIPTION\System\BIOS',0
  2. key1    db 'BIOSVendor',0
  3. key2    db 'BIOSVersion',0
  4. key3    db 'BIOSReleaseDate',0
  5.  
  6. phkResult  dd ?
  7. lpdwDisp   dd ?
  8. bufferSize dd ?
  9. result     dd ?
  10.  
  11. vendor  rb 100h
  12. version rb 100h
  13. date    rb 100h
Затем прочитаем данные из реестра. На всякий случай в коде я предусмотрел работу 32-битного приложения на 64-битной системе.
  1.         ; Прочитать значение из реестра
  2.         KEY_WOW64_64KEY = 0x100
  3.         invoke  RegOpenKeyEx,HKEY_LOCAL_MACHINE,reg_key,NULL,\
  4.                 KEY_QUERY_VALUE+KEY_WOW64_64KEY,phkResult
  5.  
  6.         mov     dword [bufferSize],100h
  7.         mov     dword [lpdwDisp],REG_SZ
  8.         invoke  RegQueryValueEx,[phkResult],key1,0,lpdwDisp,vendor,bufferSize
  9.         mov     dword [bufferSize],100h
  10.         invoke  RegQueryValueEx,[phkResult],key2,0,lpdwDisp,version,bufferSize
  11.         mov     dword [bufferSize],100h
  12.         invoke  RegQueryValueEx,[phkResult],key3,0,lpdwDisp,date,bufferSize
  13.  
  14.         invoke  RegCloseKey,[phkResult]
Вот и все, теперь в строковых переменных vendor, version и date содержатся название производителя BIOS, ее версия и дата выпуска. Что с ними делать дальше - это вы уже решаете сами в зависимости от поставленной задачи. Конечно, безоговорочно доверять этим данным нельзя, так как никто не мешает в промежуток между последней перезагрузкой и получением данных зайти в редактор реестра с админскими привилегиями и отредактировать эти строки.

В приложении пример программы с исходным текстом, которая получает данные о BIOS из реестра и выводит их на экран.

Пример программы с исходным текстом (FASM)Пример программы с исходным текстом (FASM)

BIOS.Info.Demo.zip (1,704 bytes)


Поделиться ссылкой ВКонтакте
Просмотров: 1831 | Комментариев: 2

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
ManHunter (02.09.2018 в 00:50):
Всегда рад помочь :)
avp1965 (24.08.2018 в 16:52):
Благодарствуем!

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 2 (0.0057 сек.) / Память: 4.5 Mb
Наверх