无需使用WMI即可访问主板信息

时间:2009-08-11 19:26:32

标签: c++ winapi hardware wmi motherboard

我需要在多个进程的应用程序中访问motheroard标识(序列,制造等)。 我已经能够使用WMI成功查询,但我正在寻找替代方案。

如果您想了解情况:

我有一些不同的应用程序行为,具体取决于硬件配置,或者是否设置了特定的环境变量(用于测试目的)。

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

设置环境变量时,不需要WMI查询 - 应用程序运行正常。但是,当环境变量不存在时,我的应用程序的某些组件在进行WMI查询时无法启动。我怀疑WMI调用可能会有一些副作用(每个进程最多只发生一次。这就是为什么我在寻找另一种方法。

3 个答案:

答案 0 :(得分:2)

在Vista +中,您可以使用GetSystemFirmwareTable API访问SMBIOS表并解析它们以获取[可能可用的]序列号和其他标识字符串和值。

特别是您可以访问主板数据,包括供应商和S / N:

            Intel Corporation
            DZ77BH-55K
            AAG39018-400
            BQBH206600DT

答案 1 :(得分:1)

显然没有办法做到这一点,这是不幸的。

答案 2 :(得分:-2)

该信息由CPUID指令提供。以下链接为您提供了一个程序,该程序使用该指令公开执行指令的结果。

cpuid GNU program