web-dev-qa-db-fra.com

Comment lire la collection ManagementObject dans WMI à l'aide de C #

J'ai trouvé un code sur le net et j'ai essayé d'obtenir plus d'informations sur mo [].

J'essaie d'obtenir toutes les informations contenues dans ManagementObjectCollection.

Puisque le paramètre dans mo recherche une valeur de chaîne que je ne connais pas, comment puis-je obtenir toutes les valeurs sans connaître ses valeurs de paramètre. Ou si je veux obtenir toutes les valeurs de l'indexeur liées à mo dans ManagementObjectCollection

ManagementObjectSearcher objOSDetails = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
ManagementObjectCollection osDetailsCollection = objOSDetails.Get();

foreach( ManagementObject mo in osDetailsCollection )
{ 
   _osName  = mo["name"].ToString();// what other fields are there other than name
   _osVesion = mo["version"].ToString();
   _loginName = mo["csname"].ToString();
}
22
Shantanu Gupta

Jetez un œil à votre requête WMI:

SELECT * FROM Win32_OperatingSystem

Cela signifie "obtenir toutes les instances de Win32_OperatingSystem class and include all class properties ". Ceci est un indice que les ManagementObjects résultants sont des wrappers sur le WMI Win32_OperatingSystem classe. Voir description de classe pour savoir quelles propriétés il possède, ce qu'elles signifient et pour décider celles que vous devez réellement utiliser dans votre code.

Si vous devez parcourir toutes les propriétés disponibles sans coder en dur leurs noms, utilisez la propriété Properties comme Giorgi suggéré . Voici un exemple:

foreach (ManagementObject mo in osDetailsCollection)
{
    foreach (PropertyData prop in mo.Properties)
    {
        Console.WriteLine("{0}: {1}", prop.Name, prop.Value);
    }
}
39
Helen

Utilisez d'abord la documentation pour savoir ce que signifie la propriété. Expérimentez avec l'outil WMI Code Creator .

15
Hans Passant

Vous pouvez parcourir toutes les propriétés en utilisant Propriété Properties

3
Giorgi