WMI硬件,获取RAM信息

本文关键字:RAM 信息 获取 硬件 WMI | 更新日期: 2023-09-27 17:50:11

我需要从本地和远程计算机检索RAM信息,我知道系统中的WMI。管理和我正在使用它,但我与WMI的问题是,Win32_PhysicalMemory类有一个值,我需要称为"MemoryType",但它总是返回0或"未知"。Win32_PhysicalMemory class (http://msdn.microsoft.com/en-us/library/aa394347%28v=vs.85%29.aspx)

我试图使用Win32_PhysicalMemory从c#和VBScript在3个不同的XP专业电脑与管理帐户,并得到相同的0或"未知"MemoryType值返回。我使用的代码简单而简短,从网络上的许多来源复制和粘贴,所以我确信它没有重大问题。

我使用WMI错误或有一个Windows API替代我可以使用?
远程报告不是必需的。

具体来说,我需要计算它拥有或可以拥有的RAM棒的数量,速度,以及它使用的RAM类型,DDR2, DDR3等,Win32_PhysicalMemory类给了我所有这些,除了RAM类型。

ConnectionOptions connection = new ConnectionOptions();
connection.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope scope = new ManagementScope("''''.''root''CIMV2", connection);                
scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_PhysicalMemory");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
foreach (ManagementObject queryObj in searcher.Get())
{
    System.Diagnostics.Debug.WriteLine("-----------------------------------");
    System.Diagnostics.Debug.WriteLine("Capacity: {0}", queryObj["Capacity"]);
    System.Diagnostics.Debug.WriteLine("MemoryType: {0}", queryObj["MemoryType"]);
}

WMI硬件,获取RAM信息

根据这篇kb文章,某些类型的内存将被列为未知,因为它当时不在SMBIOS (WMI使用的)中。显然从那以后就没有更新过。它说它适用于Windows Server 2003,但我在Windows 7 x64上看到了相同的结果。

我想要解决这个问题,你可以跳过中间人,不使用WMI,而是直接使用SMBIOS。我在这方面帮不了你什么忙,但至少能给你一个前进的方向。