Добрый день! Никак не удаётся написать или найти программу, которая позволяла бы выводить на экран версию 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.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Доброго дняПо заданию требуется записать в бинарник несколько массивов структур
Здравствуйте, я сделал запись в файл с одного класса, но нужно дописать в этот же файл результаты из второго класса, результаты накладываются...
Есть абстрактный класс К, на основе которого (наследование) созданы три других класса К1, К2, К3Создаваемый в программе объект О должен быть...