我需要在多个进程的应用程序中访问motheroard标识(序列,制造等)。 我已经能够使用WMI成功查询,但我正在寻找替代方案。
如果您想了解情况:
我有一些不同的应用程序行为,具体取决于硬件配置,或者是否设置了特定的环境变量(用于测试目的)。
bool IsVideoCardDisplay = ( getenv("Z_VI_DISPLAY") || !QueryWmiForSpecialBoard() ) ? false : true;
设置环境变量时,不需要WMI查询 - 应用程序运行正常。但是,当环境变量不存在时,我的应用程序的某些组件在进行WMI查询时无法启动。我怀疑WMI调用可能会有一些副作用(每个进程最多只发生一次。这就是为什么我在寻找另一种方法。
答案 0 :(得分:2)
在Vista +中,您可以使用GetSystemFirmwareTable
API访问SMBIOS表并解析它们以获取[可能可用的]序列号和其他标识字符串和值。
特别是您可以访问主板数据,包括供应商和S / N:
Intel Corporation
DZ77BH-55K
AAG39018-400
BQBH206600DT
答案 1 :(得分:1)
显然没有办法做到这一点,这是不幸的。
答案 2 :(得分:-2)
该信息由CPUID指令提供。以下链接为您提供了一个程序,该程序使用该指令公开执行指令的结果。