次の方法で共有


システム レジストリ プロバイダーの登録

システム レジストリ プロバイダーは、Windows の WMI インストール プロセスの一部として登録されます。 別のプラットフォームを使用していて、システム レジストリ プロバイダーを使用する場合は、次の手順に従って、まずプロバイダーを自分で登録する必要があります。

次の手順では、システム レジストリ プロバイダーを登録する方法について説明します。

システム レジストリ プロバイダーを登録するには

  1. プロバイダーを COM サーバーとして登録します。

    必要に応じて、レジストリ エントリの作成が必要になる場合があります。 このプロセスは、すべての COM サーバーに適用され、WMI とは無関係です。 詳しくは、Microsoft Windows ソフトウェア開発キット (SDK) で COM のドキュメントをご覧ください。

  2. __Win32Provider クラスのインスタンスを作成して、システム レジストリ プロバイダーの実装を記述します。

    __Win32Provider インスタンスでは、プロバイダーの名前とそのクラス識別子 (CLSID) について記述します。

    次の例では、__Win32Provider をインスタンス プロパティ、イベント、またはメソッド プロバイダーとして登録する方法について説明しています。

    // Instance provider
    instance of __Win32Provider as $InstProv
    {
        Name    = "RegProv" ;
        ClsId   = "{fe9af5c0-d3b6-11ce-a5b6-00aa00680c3f}" ;
    };    
    // Property provider 
    instance of __Win32Provider as $PropProv 
    {
        Name = "RegPropProv"; 
        Clsid = "{72967901-68EC-11d0-B729-00AA0062CBB7}"; 
    }; 
    // Event provider
    instance of __Win32Provider as $RegEvent
    {
        Name = "RegistryEventProvider";
        Clsid = "{fa77a74e-e109-11d0-ad6e-00c04fd8fdff}";
    };
    instance of __Win32Provider as $RegMethod
    {
        Name = "RegistryMethodProvider";
        Clsid = "{44DE513E-60C2-11d3-AF33-00C04F79FEB1}";
    };
    
  3. システム レジストリ プロバイダーの論理実装を記述するために、__ProviderRegistration クラスから派生したクラスのインスタンスを 1 つ以上作成します。

    システム レジストリ プロバイダーを登録する目的に応じて、次のクラスの 1 つ以上を作成できます。

    __InstanceProviderRegistration

    __PropertyProviderRegistration

    __EventProviderRegistration

    __MethodProviderRegistration

    次の MOF コード例では、システム レジストリ プロバイダーをインスタンス、プロパティ、イベント、またはメソッド プロバイダーとして登録する方法について説明しています。

    instance of __InstanceProviderRegistration
    {
        Provider = $InstProv;
        SupportsPut = TRUE;
        SupportsGet = TRUE;
        SupportsDelete = FALSE;
        SupportsEnumeration = TRUE;
    };
    instance of __PropertyProviderRegistration
    {
        Provider = $PropProv;
        SupportsPut = TRUE;
        SupportsGet = TRUE;
    }; 
    instance of __EventProviderRegistration
    {
        Provider = $RegEvent;
        EventQueryList = {
                "select * from RegistryKeyChangeEvent",
                "select * from RegistryValueChangeEvent",
                "select * from RegistryTreeChangeEvent"};
    };
    // Method provider
    instance of __MethodProviderRegistration
    {
        Provider = $RegMethod;
    };
    
  4. MOF コンパイラまたは IMofCompiler インターフェイスを使用して MOF ファイルをコンパイルします。

Windows SDK の WMI セクションで提供される RegEvent.mof ファイルには、システム レジストリ プロバイダーをイベント プロバイダーとして登録するために必要な __Win32Provider__EventProviderRegistration インスタンスが含まれています。 プロバイダーの登録の詳細については、「プロバイダーの登録」および「WMI イベントの受信」を参照してください。