【发布时间】:2011-08-06 00:25:38
【问题描述】:
我需要从本地和远程计算机检索 RAM 信息,我知道 System.Management 中的 WMI 并且我正在使用它,但我对 WMI 的问题是 Win32_PhysicalMemory 类有一个我需要的值,称为“MemoryType”,但它总是返回 0 或“未知”。
Win32_PhysicalMemory class (http://msdn.microsoft.com/en-us/library/aa394347%28v=vs.85%29.aspx)
我尝试在 3 台具有管理员帐户的不同 XP Professional 计算机上同时使用 C# 和 VBScript 中的 Win32_PhysicalMemory,并返回相同的 0 或“未知”MemoryType 值。我使用的代码简单而简短,是从网络上的许多来源复制和粘贴的,所以我确信它没有什么大问题。
我是否错误地使用了 WMI,或者是否有我可以使用的 Windows API 替代方案?
远程报告不是必需的。
具体来说,我需要计算它拥有或可以拥有的 RAM 条数、速度以及它使用的 RAM 类型、DDR2、DDR3 等,Win32_PhysicalMemory 类给了我所有这些,除了类型内存。
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"]);
}
【问题讨论】: