C++ WMI给我不完整的硬件信息(PhysicalMemory)

C++ WMI给我不完整的硬件信息(PhysicalMemory),c++,wmi,wmi-query,wmic,C++,Wmi,Wmi Query,Wmic,关于这个问题,我已经读到了一个几乎完全相同的问题(),在这里我希望获得更多关于这个主题的信息 我需要获取各种硬件信息,如RAM序列号、硬盘驱动器SN、CPU SN等。我使用Visual C++ 2010,使用WMI查询信息,但它没有给我想要的。例如,我开始尝试获取RAM序列号,在查询它之后(我使用Win32_PhysicalMemory,然后获取属性“SerialNumber”),我得到 显然不是这样。我也去了命令行(wmic memorychip get serialnumber),但我得到了

关于这个问题,我已经读到了一个几乎完全相同的问题(),在这里我希望获得更多关于这个主题的信息

我需要获取各种硬件信息,如RAM序列号、硬盘驱动器SN、CPU SN等。我使用Visual C++ 2010,使用WMI查询信息,但它没有给我想要的。例如,我开始尝试获取RAM序列号,在查询它之后(我使用Win32_PhysicalMemory,然后获取属性“SerialNumber”),我得到

显然不是这样。我也去了命令行(wmic memorychip get serialnumber),但我得到了同样的结果。但我知道序列号在那里;当我使用第三方程序CPU-Z时,它会完美地检索RAM序列号

我问错班级了吗?我有什么遗漏吗?我曾在其他多台计算机上尝试过我制作的可执行文件,结果好坏参半——但CPU-Z从未失败过


我在Visual StudioC++ 2010上开发了Windows 7位计算机。谢谢。

WMI使用WMI提供程序获取数据,不幸的是,一些制造商没有向这些提供程序公开此类数据,因此您在这里运气不好。如果您想要一种可靠的方法来获取一些内存信息,如序列号、制造商等,您可以像CPU-Z一样使用串行存在检测(SPD)。您可以从该站点获取与SPD相关的所有文档。

CPU-Z可能不使用WMI、使用汇编或其他。我知道CPU-Z使用了一些不同的方法来获取硬件信息。有人提到,使用CPU-Z的库将达成协议,但问题是我是个新手,如果没有完整的文档和大量的示例代码,我自己无法/将无法做到这一点……这些属性需要由主板的驱动程序提供。这些日子来的很艰难,这个细分市场的激烈竞争没有给好东西留下任何空间。实际上没有人关心它。使用SPD有多难?我只是好奇,想要一些参考资料。至于我自己的问题,我决定只获取RAM/HD容量和CPU名称(WMI中最有可能存在的3个属性)访问此类信息需要一些低级编程技能,因此难度取决于您的编程背景,有一些sdk可以轻松读取SDP信息,或者您可以通过i2c总线访问这些信息。
SerialNumber
SerNum0
SerNum1