Perangkat keras WMI, dapatkan info RAM

Saya perlu mengambil info RAM dari komputer lokal dan jarak jauh, saya mengetahui WMI di System.Management dan saya menggunakannya, tetapi masalah saya dengan WMI adalah kelas Win32_PhysicalMemory memiliki nilai yang saya perlukan disebut "MemoryType ", tetapi selalu mengembalikan 0 atau "Tidak Diketahui".
Kelas Win32_PhysicalMemory (http://msdn.microsoft.com/en-us/library/aa394347%28v=vs.85%29. aspx)

Saya telah mencoba menggunakan Win32_PhysicalMemory dari C# dan VBScript pada 3 komputer XP Professional yang berbeda dengan akun admin dan mendapatkan nilai MemoryType 0 atau "Tidak Dikenal" yang sama. Kode yang saya gunakan sederhana dan pendek, salin dan tempel dari sejumlah sumber di internet jadi saya yakin tidak ada masalah besar dengannya.

Apakah saya salah menggunakan WMI atau adakah alternatif Windows API yang bisa saya gunakan?
Laporan jarak jauh tidak penting.

Secara khusus saya perlu menghitung jumlah batang RAM yang dimilikinya, atau dapat dimiliki, kecepatannya, dan jenis RAM yang digunakannya, DDR2, DDR3, dll., kelas Win32_PhysicalMemory memberi saya semua ini kecuali jenis 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"]);
}

person ambiguousPanda    schedule 15.04.2011    source sumber


Jawaban (1)


Menurut artikel kb ini, jenis memori tertentu akan terdaftar sebagai tidak diketahui karena tidak ada di SMBIOS (yang digunakan WMI) pada saat itu. Rupanya itu belum diperbarui sejak saat itu. Dikatakan itu berlaku untuk Windows Server 2003 tapi saya melihat hasil yang sama pada Windows 7 x64.

Saya kira untuk menyiasatinya, Anda dapat memotong perantara dan tidak menggunakan WMI tetapi menggunakan SMBIOS secara langsung. Saya tidak akan banyak membantu di sana, tetapi setidaknya ini akan memberi Anda arahan untuk melanjutkan.

person Jeff Mercado    schedule 15.04.2011
comment
Tidak, itu masih akurat. Tidak semua memori yang dihasilkan memiliki informasi penting yang dikodekan dalam EEPROM-nya. Kalau tidak ada, tidak bisa dibaca. Sederhana seperti itu. - person Cody Gray; 15.04.2011
comment
tetapi ketika saya menggunakan perangkat lunak bernama CPU-Z, ia memberi saya semua informasi, jadi saya tahu bahwa itu menyimpan suatu perangkat lunak. - person ambiguousPanda; 17.04.2011
comment
@ambigu: Ya, itu juga yang saya pikirkan. Meskipun Cody ada benarnya, bisa jadi CPU-Z menyimpan informasi yang mereka temukan berdasarkan nomor seri. - person Jeff Mercado; 17.04.2011