方法 :厳密に型指定されたオブジェクトを使用する

拡張性に対する顧客のニーズを満たすために、通常、WMI オブジェクトは遅延バインディングされ、厳密な型指定を必要としません。.NET Framework 環境では、WMI は WMI オブジェクトの事前バインディング ラッパーを自動的に生成できます。

厳密に型指定されたラッパーを使用すると、アプリケーションは、厳密に型指定されたオブジェクトに対して、Microsoft Visual Studio の使用可能なすべてのサポート機能 (Intellisense やオブジェクト参照など) を利用できるようになります。たとえば、Intellisense を使用して Win32_Service クラスのクラス メンバをすばやく検索できるように、Win32_Service クラスの事前バインディング ラッパーを生成できます。WMI オブジェクトのラッパーを生成するには、次のツールおよびメソッドを使用できます。

ラッパーはマネージ コード クラスとして実装されるため、複数言語をサポートし、すべてのプログラミング言語で使用できます。

次のコード例には、厳密に型指定された Service クラスが含まれています。これは、Win32_Service クラスのラッパーです。この例を実行する前に、Visual Studio 2005 コマンド プロンプトで次のコマンドを使用して、特定のクラスを生成する必要があります (C# コード ファイルと Visual Basic .NET コード ファイルのどちらを生成するかによって、コードの言語の値を変更してください)。

C:\> MgmtClassGen Win32_Service /L CS /N root\cimv2 /P C:\temp\service.cs

ジェネレータ ツールから出力された service.cs コード ファイルを、次に示すコードと共にプロジェクトに追加する必要があります。foreach ステートメントでは、通常使用される ManagementObject クラスの代わりに、厳密に型指定された "Service" クラスが使用され、また、返されるオブジェクトのプロパティへの単純化された標準ドット表記によるアクセスが使用されています。

using System;
using ROOT.CIMV2.Win32;
// Contains the strongly typed generated class "Service" 
// in ROOT.CIMV2.Win32 namespace. This namespace was
// generated using the MgmtClassGen tool for
// the Win32_Service class
   
class Sample 
{
    // Enumerate instances of Win32_Service class
    void EnumerateServices() 
    {
        Console.WriteLine("List services and their state");
        foreach(Service ser in Service.GetInstances())
        Console.WriteLine(
            "Service: "+ ser.Name + " is " + ser.State);
    }
   
    public static void Main(string[] args) 
    {
        Sample test = new Sample();
        test.EnumerateServices();
        return;
    }
}

コードのコンパイル

この例では、System 名前空間への参照が必要です。

関連項目

Footer image

このトピックに関するコメントを Microsoft に送信する。

Copyright © 2007 by Microsoft Corporation.All rights reserved.

表示: