这可能不是最好的方法,但是我目前正在使用以下方法检索计算机上的RAM数量:
manageObjSearch.Query = new ObjectQuery("SELECT TotalVisibleMemorySize FROM Win32_OperatingSystem");
manageObjCol = manageObjSearch.Get();
foreach (ManagementObject mo in manageObjCol)
sizeInKilobytes = Convert.ToInt64(mo["TotalVisibleMemorySize"]);
它工作的很好,但是我觉得我可以更直接地做到这一点,而无需在单个元素上进行foreach操作,但是我不知道如何索引
ManagementObjectCollection
我想做这样的事情:
ManagementObject mo = new ManagementObject("Win32_OperatingSystem.TotalVisibleMemorySize")
mo.Get();
Console.WriteLine(mo["TotalVisibleMemorySize"].ToString())
甚至是类似的东西
ManagementClass mc = new ManagementClass("Win32_OperatingSystem");
Console.WriteLine(mc.GetPropertyValue("TotalVisibleMemorySize").ToString());
我似乎无法弄清楚。有任何想法吗?
最佳答案
foreach语句隐藏了您需要访问的枚举数。您可以这样直接进行:
var enu = manageObjSearch.Get().GetEnumerator();
if (!enu.MoveNext()) throw new Exception("Unexpected WMI query failure");
long sizeInKilobytes = Convert.ToInt64(enu.Current["TotalVisibleMemorySize"]);