Версия BIOS с помощью С++

292
10 мая 2017, 09:47

Добрый день! Никак не удаётся написать или найти программу, которая позволяла бы выводить на экран версию BIOS текущего компьютера. Нужен код на С++/С. Возможно ли это вообще?

Answer 1

Информация нужная тебе лежит в реестре в [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;
}
Answer 2

Как информация о 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.

READ ALSO
Запись в бинарный файл структуры

Запись в бинарный файл структуры

Доброго дняПо заданию требуется записать в бинарник несколько массивов структур

325
Почему не создаётся файл в с++

Почему не создаётся файл в с++

Не знаю почему но не создаётся файлПисал ofstream WAVf("newWAV

337
Запись в конец файла c++

Запись в конец файла c++

Здравствуйте, я сделал запись в файл с одного класса, но нужно дописать в этот же файл результаты из второго класса, результаты накладываются...

425
Выбор класса при создании объекта

Выбор класса при создании объекта

Есть абстрактный класс К, на основе которого (наследование) созданы три других класса К1, К2, К3Создаваемый в программе объект О должен быть...

351