Мы используем пакет обновления 3 для Windows XP Pro как 32-разрядный, так и 64-разрядный. Мы используем WMI для получения производителя и модели BIOS, но мы действительно предпочли бы подход, который использовал либо Win32 API, либо язык ассемблера, либо что-то кроме WMI или COM. Примеры кода приветствуются.
Как получить производителя и модель BIOS на C++ без использования WMI?
Ответы (4)
Он находится в реестре по адресу HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System.
У вас есть SystemBiosVersion, SystemBiosDate и т. д.
Кроме того, есть подключ под названием BIOS, который содержит еще больше информации, такой как BIOSVendor и BIOSVersion.
В зависимости от того, кто построил систему, вы также сможете получить BaseBoardManufacturer и другую интересную информацию.
ОБНОВЛЕНИЕ
Вы можете проверить эту ссылку. Это код VB. Они пытаются прочитать его из реестра, но в противном случае возвращаются к извлечению строковых данных из адреса памяти. В данном случае это &HFE061 для версии и &HFFFF5 для даты.
Вы можете сопоставить память SMBIOS и проанализировать ее. Большая часть информации, которую вы хотите, находится там. Это можно сделать из любого языка, имеющего доступ к примитивам отображения системной памяти.
Кроме того, этот документ содержит информацию о функциях Win32, которые могут использоваться для запроса SMBIOS.
DmiDecode для Windows может это сделать.
В codeproject есть статья с исходным кодом, который использует вызов API GetSystemFirmwareTable для получения информации SMIBIOS. ссылка: http://www.codeproject.com/KB/system/SMBIOS_Peek.aspx а>