Matériel WMI, obtenir des informations sur la RAM

Je dois récupérer des informations sur la RAM à partir d’ordinateurs locaux et distants. Je connais WMI dans System.Management et je l’utilise, mais mon problème avec WMI est que la classe Win32_PhysicalMemory a une valeur que j’ai besoin d’appeler ” MemoryType ” il retourne toujours 0 ou “Inconnu”.
Classe Win32_PhysicalMemory (http://msdn.microsoft.com/en-us/library/aa394347%28v=vs.85%29.aspx)

J’ai essayé d’utiliser Win32_PhysicalMemory à partir de C # et de VBScript sur 3 ordinateurs XP Professional différents avec un compte administrateur et j’ai obtenu le même 0 ou la même valeur “Unknown” de MemoryType. Le code que j’ai utilisé est simple et court. Il est copié et collé à partir d’un certain nombre de sources sur le réseau. Je suis donc sûr qu’il ne présente pas de problème majeur.

Est-ce que j’utilise mal WMI ou existe-t-il une alternative à l’API Windows que je peux utiliser?
Les rapports à distance ne sont pas essentiels.

Plus précisément, je dois compter le nombre de bâtons de RAM qu’il a ou peut avoir, sa vitesse et le type de RAM qu’il utilise, DDR2, DDR3, etc., la classe Win32_PhysicalMemory me donne tout cela à l’exception du type de 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"]); } 

Selon cet article de base de connaissances, certains types de mémoire seront répertoriés comme inconnus car ils ne figuraient pas dans le SMBIOS (utilisé par WMI) à ce moment-là. Apparemment, il n’a pas été mis à jour depuis. Il dit que cela s’applique à Windows Server 2003, mais je vois les mêmes résultats sous Windows 7 x64.

Je suppose que pour contourner cela, vous pouvez couper l’homme du milieu et ne pas utiliser WMI mais utiliser directement le SMBIOS. Je ne vous aiderai pas beaucoup, mais au moins, cela vous donnera une direction à suivre.