Добрый день! Никак не удаётся написать или найти программу, которая позволяла бы выводить на экран версию BIOS текущего компьютера. Нужен код на С++/С. Возможно ли это вообще?
Информация нужная тебе лежит в реестре в [HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS].
Вот код:
#include "stdafx.h"
#include <stdio.h>
#include <Windows.h>
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;
}
Как информация о 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.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники