Получение серийного номера BIOS без WMI

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

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

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

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

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

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

1 ответ

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

Другие вопросы по тегам