web-dev-qa-db-ja.com

C#を使用してWMIでManagementObjectコレクションを読み取る方法

ネット上でコードを見つけて、mo []に関する詳細情報を取得しようとしています。

ManagementObjectCollectionに含まれるすべての情報を取得しようとしています。

moのパラメーターは、私が知らない文字列値を探しているので、パラメーター値を知らずにすべての値を取得するにはどうすればよいですか。または、ManagementObjectCollectionのmoに関連するすべてのインデクサー値を取得する場合

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

WMIクエリをご覧ください。

SELECT * FROM Win32_OperatingSystem

Win32_OperatingSystem クラスのすべてのインスタンスを取得し、すべてのクラスプロパティを含める」ことを意味します。これは、結果のManagementObjectsがWMI Win32_OperatingSystemクラスのラッパーであることの手がかりです。 クラスの説明 を参照して、どのプロパティがあり、それらが何を意味するのかを学習し、コードで実際に使用する必要があるプロパティを決定します。

名前をハードコーディングせずに使用可能なすべてのプロパティを反復処理する必要がある場合、 Properties プロパティを Giorgi推奨 のように使用します。次に例を示します。

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

ドキュメント を最初に使用して、プロパティの意味を理解します。 WMI Code Creator ツールを試してください。

15
Hans Passant

Properties Property を使用して、すべてのプロパティを反復処理できます。

3
Giorgi