#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; }
Комментариев нет:
Отправить комментарий