Мне нужно получить информацию об оперативной памяти как с локальных, так и с удаленных компьютеров, я знаю о WMI в System.Management и использую его, но моя проблема с WMI заключается в том, что класс Win32_PhysicalMemory имеет нужное мне значение, называемое "MemoryType », но всегда возвращает 0 или «Неизвестно».
Класс Win32_PhysicalMemory (http://msdn.microsoft.com/en-us/library/aa394347%28v=vs.85%29. aspx)
Я пытался использовать Win32_PhysicalMemory как из C#, так и из VBScript на 3 разных компьютерах XP Professional с учетной записью администратора и получил одно и то же значение 0 или «Неизвестное» MemoryType. Код, который я использовал, прост и короток, скопирован и вставлен из множества источников в сети, поэтому я уверен, что с ним не возникнет серьезных проблем.
Я неправильно использую WMI или есть альтернатива Windows API, которую я могу использовать?
Удаленные отчеты не важны.
В частности, мне нужно подсчитать количество планок оперативной памяти, которые она имеет или может иметь, скорость и тип используемой оперативной памяти, 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"]);
}