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();
}
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 ManagementObject
s 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);
}
}
Utilisez d'abord la documentation pour savoir ce que signifie la propriété. Expérimentez avec l'outil WMI Code Creator .
Vous pouvez parcourir toutes les propriétés en utilisant Propriété Properties