【问题标题】:WMI giving me incomplete hardware info (PhysicalMemory)WMI 给我不完整的硬件信息 (PhysicalMemory)
【发布时间】:2014-07-16 02:51:16
【问题描述】:

我已经阅读了关于此问题的几乎完全相同的问题 (WMI hardware, get RAM info),我希望在这里获得有关此主题的更多信息。

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

SerialNumber
SerNum0
SerNum1

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

我是否查询了错误的课程?有什么我想念的吗?我已经尝试了我在其他多台计算机上制作的可执行文件,成功和失败的结果喜忧参半——但 CPU-Z 从未失败。

我正在 Windows 7 64 位计算机上使用 Visual Studio C++ 2010 进行开发。谢谢。

【问题讨论】:

  • CPU-Z 可能不使用 WMI,使用汇编或其他。
  • 我确实意识到 CPU-Z 使用一些不同的方法来获取硬件信息。有人提到使用 CPU-Z 的库将达成交易,但问题是我非常新手,如果没有完整的文档和大量示例代码,我自己不能/将无法做到这一点......
  • 这类属性需要由主板驱动程序提供。这些天来非常困难,该细分市场的激烈竞争并没有给好东西留下任何空间。没有人真正关心它。

标签: c++ wmi wmi-query wmic


【解决方案1】:

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

【讨论】:

  • 使用 SPD 有多难?我只是好奇并要求一些参考。至于我自己的问题,我决定只获取 RAM/HD 容量和 CPU 名称(其中 3 个属性最有可能在 WMI 中实际存在)
  • 访问此类信息需要一些低级编程技能,所以难度取决于您的编程背景,有一些sdk可以轻松读取SDP信息,或者您可以通过i2c总线访问这些信息。
猜你喜欢
  • 2011-08-06
  • 2012-10-24
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2019-07-04
  • 1970-01-01
  • 2010-10-28
相关资源
最近更新 更多