Получение серийного номера BIOS без WMI - PullRequest
1 голос
/ 23 марта 2012

Я пытаюсь получить серийный номер BIOS для 32-разрядной системы WinXP Embedded из приложения пользовательского режима Win32 (MFC, если это делает различие).

Я пытаюсь получить тот же серийный номер, который вы можете получить через WMI из класса 'Win32_BIOS' от члена "SerialNumber". Проблема в том, что я не могу использовать WMI, так как он должен работать на старых системах, в которых не установлен WMI.

У нас в основном есть ряд машин с данными, закодированными в этом поле BIOS, поэтому пользователи не могут изменять их, и нам иногда требуется, чтобы эта информация выводилась в файл и отправлялась нам.

Я нашел 'GetSystemFirmwareTable', но минимальная версия Win - WinXP 64-bit. О WMI не может быть и речи, и у нас уже есть код для считывания его с физического физического адреса, но проблема в том, что используемое нами программное обеспечение, позволяющее нам отображать эти физические адреса, связано с нашим программным обеспечением, и наше программное обеспечение не может работать на данном этапе в данном конкретном случае использования (лицензирование).

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

Есть ли какая-то теневая копия, которую ОС создает, к которой я могу получить доступ без огромного количества настроек?

1 Ответ

1 голос
/ 23 марта 2012

NTVDM в Windows XP сопоставляет первый мегабайт физической памяти, чтобы вы могли найти блоб SMBIOS в этом первом мегабайте и получить оттуда серийный номер BIOS.Подробнее см. PDF-спецификацию .

...