Доступ к информации о материнской плате без использования WMI - PullRequest
3 голосов
/ 11 августа 2009

Мне нужно получить доступ к идентификатору motheroard (серийный номер, производство и т. Д.) В моем приложении для нескольких процессов. Мне удалось успешно запросить это с помощью WMI, но я ищу альтернативу.

Если вам интересно узнать ситуацию:

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

bool IsVideoCardDisplay = ( getenv("Z_VI_DISPLAY") || !QueryWmiForSpecialBoard() ) ? false : true;

Когда установлена ​​переменная окружения, запрос WMI не требуется - приложение работает нормально. Однако, когда переменная среды отсутствует, некоторые компоненты моего приложения не запускаются, когда это необходимо для выполнения запросов WMI. Я подозреваю, что могут быть некоторые побочные эффекты от вызовов WMI (которые могут быть максимум один раз на процессы. Вот почему я ищу альтернативный способ.

Ответы [ 3 ]

2 голосов
/ 05 декабря 2012

В Vista + вы можете использовать GetSystemFirmwareTable API для доступа к таблицам SMBIOS и анализа их для получения [возможно доступных] серийных номеров и других идентификационных строк и значений.

В частности, вы можете получить доступ к данным материнской платы, включая данные о производителе и S / N:

            Intel Corporation
            DZ77BH-55K
            AAG39018-400
            BQBH206600DT
1 голос
/ 26 августа 2009

По-видимому, нет способа сделать это, что вызывает сожаление.

0 голосов
/ 12 августа 2009

Эта информация предоставляется инструкцией CPUID. Следующая ссылка предоставляет вам программу, которая использует эту инструкцию для предоставления результатов ее выполнения.

Программа GNU cpuid

...