Страницы

Поиск по вопросам

вторник, 18 февраля 2020 г.

Как узнать версию BIOS?

#cpp #bios


Как узнать и вывести на экран версию BIOS текущего компьютера?
    


Ответы

Ответ 1



Как информация о BIOS представлена определяется SMBIOS стандартом. На Windows можно выполнить wmic bios get smbiosbiosversion команду. На *nix есть dmidecode утилита, которая умеет читать эту информацию. К примеру, чтобы напечатать версию BIOS: root# dmidecode -s bios-version 4.04 Стандарт говорит, что начать читать можно из памяти с "_SM*_" в диапазоне F0000..FFFFF. На Linux, это доступно как /dev/mem или из файлов: /sys/firmware/dmi/tables/smbios_entry_point /sys/firmware/dmi/tables/DMI Чтение версии BIOS сводится к загрузке DMI (SMBIOS) таблицы из DMI файла cо смещением, вычисляемым зависимым от используемой версии SMBIOS cтандарта, хранящейся в smbios_entry_point файле. Из таблицы достаётся список структур, в которых уже конкретная информация хранится. К примеру, индекс строки с версией BIOS это 0x05 байт в записи с BIOS информацией (type 0). Можно посмотреть как dmidecode это реализует на C.

Ответ 2



Информация нужная тебе лежит в реестре в [HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS]. Вот код: #include "stdafx.h" #include #include int main(int argc, char* argv[]) { HKEY rKey; TCHAR Reget[256]; DWORD RegetPath = sizeof(Reget); RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"HARDWARE\\DESCRIPTION\\System\\BIOS", NULL, KEY_QUERY_VALUE, &rKey); RegQueryValueEx(rKey, L"BIOSVersion",NULL,NULL, (LPBYTE)&Reget,&RegetPath); printf("%ls", Reget); getchar(); return 0; }

Комментариев нет:

Отправить комментарий