ฉันต้องการดึงข้อมูล RAM จากคอมพิวเตอร์ทั้งในระบบและระยะไกล ฉันทราบถึง 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 บนคอมพิวเตอร์ XP Professional 3 เครื่องที่มีบัญชีผู้ดูแลระบบ และได้รับค่า MemoryType 0 หรือ "Unknown" เหมือนกัน โค้ดที่ฉันใช้นั้นเรียบง่ายและสั้น คัดลอกและวางจากแหล่งต่างๆ ในอินเทอร์เน็ต ดังนั้นฉันมั่นใจว่าจะไม่มีปัญหาใหญ่ๆ เกิดขึ้น
ฉันใช้ 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"]);
}