Как получить производителя и модель BIOS на C ++ без использования WMI? - PullRequest
3 голосов
/ 12 июня 2009

Мы работаем под управлением Windows XP Pro Service Pack 3, 32-разрядной и 64-разрядной. Мы используем WMI для получения производителя и модели BIOS, но мы действительно предпочли бы подход, использующий либо Win32 API, либо язык ассемблера, либо что-то кроме WMI или COM. Примеры кода приветствуются.

Ответы [ 4 ]

3 голосов
/ 12 июня 2009

Вы можете отобразить в памяти SMBIOS и проанализировать ее. Большая часть необходимой вам информации находится там. Это можно сделать на любом языке, который имеет доступ к примитивам отображения системной памяти.

Кроме того, этот документ содержит информацию о функциях Win32, которые можно использовать для запроса SMBIOS.

2 голосов
/ 12 июня 2009

Он находится в реестре по адресу HKEY_LOCAL_MACHINE / HARDWARE / DESCRIPTION / System

У вас есть SystemBiosVersion, SystemBiosDate и т. Д.

Кроме того, есть подраздел, называемый BIOS, который содержит дополнительную информацию, такую ​​как BIOSVendor и BIOSVersion.

В зависимости от того, кто построил систему, вы также сможете получить BaseBoardManufacturer и другую полезную информацию.

UPDATE

Вы можете проверить эту ссылку . Это код VB. Они пытаются прочитать его из реестра, но в противном случае это приводит к извлечению строковых данных из адреса памяти. В этом случае это & ​​HFE061 для версии и & HFFFF5 для даты.

0 голосов
/ 07 декабря 2011

В codeproject есть статья с исходным кодом, которая использует API-вызов GetSystemFirmwareTable для получения информации SMIBIOS. ссылка: http://www.codeproject.com/KB/system/SMBIOS_Peek.aspx

0 голосов
/ 13 июня 2009

DmiDecode для Windows может сделать это.

...