次の方法で共有


レジストリ スクリプトの例

このトピックに含まれるスクリプト例では、キーをシステム レジストリに追加する方法、レジストラー COM サーバーを登録する方法、複数のパース ツリーを指定する方法が示されます。

HKEY_CURRENT_USER にキーを追加する

次のパース ツリーは、単一のキーをシステム レジストリに追加するシンプルなスクリプトを示しています。 具体的には、このスクリプトはキー MyVeryOwnKeyHKEY_CURRENT_USER に追加します。 また、既定の文字列値 HowGoesIt を新しいキーに代入します。

HKEY_CURRENT_USER
{
    'MyVeryOwnKey' = s 'HowGoesIt'
}

このスクリプトを簡単に拡張して、次のように複数のサブキーを定義することができます。

HKCU
{
    'MyVeryOwnKey' = s 'HowGoesIt'
    {
        'HasASubkey'
        {
            'PrettyCool' = d '55'
            val 'ANameValue' = s 'WithANamedValue'
        }
    }
}

これで、スクリプトではサブキー HasASubkeyMyVeryOwnKey に追加されます。 このサブキーに対して、サブキー PrettyCool (既定の DWORD 値 55 を持つ) と名前付きの値 ANameValue (文字列値 WithANamedValue を持つ) の両方が追加されます。

レジストラー COM サーバーを登録する

次のスクリプトでは、レジストラー COM サーバー自体を登録します。

HKCR
{
    ATL.Registrar = s 'ATL Registrar Class'
    {
        CLSID = s '{44EC053A-400F-11D0-9DCD-00A0C90391D3}'
    }
    NoRemove CLSID
    {
        ForceRemove {44EC053A-400F-11D0-9DCD-00A0C90391D3} = s 'ATL Registrar Class'
        {
            ProgID = s 'ATL.Registrar'
            InprocServer32 = s '%MODULE%'
            {
                val ThreadingModel = s 'Apartment'
            }
        }
    }
}

実行時に、このパース ツリーによって ATL.Registrar キーが HKEY_CLASSES_ROOT に追加されます。 この新しいキーに対して、次に:

  • ATL Registrar Class がキーの既定の文字列値として指定されます。

  • CLSID がサブキーとして追加されます。

  • CLSID に対して {44EC053A-400F-11D0-9DCD-00A0C90391D3} が指定されます。 (この値は、CoCreateInstance で使うレジストラーの CLSID です。)

CLSID は共有されるため、登録解除モードで削除されるべきではありません。 ステートメント NoRemove CLSID によってこれが実行されます。CLSID は登録モードで開かれ、登録解除モードで無視される必要があることが示されます。

ForceRemove ステートメントではハウスキーピング機能が提供され、キーとそのすべてのサブキーが、キーを再作成する前に削除されます。 これは、サブキーの名前が変更されている場合に便利です。 このスクリプト例では、ForceRemove によって {44EC053A-400F-11D0-9DCD-00A0C90391D3} が既に存在しているかどうかがチェックされます。 存在している場合、ForceRemove では:

  • {44EC053A-400F-11D0-9DCD-00A0C90391D3} とそのすべてのサブキーが再帰的に削除されます。

  • {44EC053A-400F-11D0-9DCD-00A0C90391D3} が再作成されます。

  • {44EC053A-400F-11D0-9DCD-00A0C90391D3} の既定の文字列値として ATL Registrar Class が追加されます。

パース ツリーでは、{44EC053A-400F-11D0-9DCD-00A0C90391D3} に 2 つの新しいサブキーが追加されています。 最初のキー ProgID は、既定の文字列値 (ProgID) を受け取ります。 2 番目のキー InprocServer32 は、既定の文字列値 (%MODULE%) を受け取ります。これは、この記事の「置き換え可能パラメーターの使用 (レジストラー プリプロセッサ)」セクションで説明されているプリプロセッサ値です。 InprocServer32 は、文字列値 Apartment を持つ名前付きの値 ThreadingModel も受け取ります。

複数のパース ツリーを指定する

1 つのスクリプトで複数のパース ツリーを指定するには、単に 1つのツリーの末尾に別のツリーを配置します。 たとえば、次のスクリプトでは、キー MyVeryOwnKeyHKEY_CLASSES_ROOTHKEY_CURRENT_USER 両方のパース ツリーに追加します。

HKCR
{
    'MyVeryOwnKey' = s 'HowGoesIt'
}
HKEY_CURRENT_USER
{
    'MyVeryOwnKey' = s 'HowGoesIt'
}

Note

レジストラー スクリプトでは、4K が最大のトークン サイズです。 (トークンとは、構文内で認識可能なすべての要素のことです。)上記のスクリプト例では、HKCRHKEY_CURRENT_USER'MyVeryOwnKey''HowGoesIt' はすべてトークンです。

関連項目

レジストラー スクリプトの作成