Это, вероятно, не самый лучший способ, но я в настоящее время извлечения объем оперативной памяти на компьютере с помощью:Использование ManagementObject для извлечения одного свойства WMI
manageObjSearch.Query = new ObjectQuery("SELECT TotalVisibleMemorySize FROM Win32_OperatingSystem");
manageObjCol = manageObjSearch.Get();
foreach (ManagementObject mo in manageObjCol)
sizeInKilobytes = Convert.ToInt64(mo["TotalVisibleMemorySize"]);
Он работает хорошо, но я чувствую, Я мог бы делать это более непосредственно и без Еогеасп над одним элементом, но я не могу понять, как индексировать 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());
Я просто не могу понять это. Есть идеи?
Спасибо за помощь, Ханс. – KarlHungus
Кроме того, начиная с Vista, Win32_OPeratingSystem является одноэлементным классом, поэтому вы можете избежать использования ManagementObjectSearcher. См. Здесь: http://stackoverflow.com/questions/56208/wmi-directly-accessing-the-singleton-instance-of-win32-operatingsystem/73054#73054 – 2010-04-28 20:14:46