レジストリのスクリプトの例
更新 : 2007 年 11 月
ここでは、レジストリへのキーの追加、レジストラ COM サーバーの登録、および複数のパース ツリーの指定を行うスクリプトの例を示します。
HKEY_CURRENT_USER へのキーの追加
次のパース ツリーは、レジストリに 1 つのキーを追加する簡単なスクリプトを示しています。このスクリプトでは、HKEY_CURRENT_USER に MyVeryOwnKey というキーを追加します。また、新しいキーに HowGoesIt? という既定の文字列値を代入します。
HKEY_CURRENT_USER
{
'MyVeryOwnKey' = s 'HowGoesIt?'
}
このスクリプトを拡張して複数のサブキーを簡単に定義できます。たとえば、次のようになります。
HKCU
{
'MyVeryOwnKey' = s 'HowGoesIt?'
{
'HasASubkey'
{
'PrettyCool?' = d '55'
val 'ANameValue' = s 'WithANamedValue'
}
}
}
この例では、MyVeryOwnKey に HasASubkey というサブキーを追加しています。また、このサブキーに対してサブキー 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'
}
}
}
}
このパース ツリーは、実行時に HKEY_CLASSES_ROOT に ATL.Registrar キーを追加します。この新しいキーに対して、パース ツリーは次の処理を実行します。
キーの既定の文字列値として ATL Registrar Class を指定します。
サブキーとして CLSID を追加します。
CLSID として {44EC053A-400F-11D0-9DCD-00A0C90391D3} を指定します。この値は、CoCreateInstance と共に使用するレジストラの CLSID です。
CLSID は共有されるため、Unregister モードで削除しないでください。これには、NoRemove CLSID というステートメントを使用します。このステートメントは、CLSID を Register モードで開き、Unregister モードでは無視することを示します。
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 つのツリーの後に別のツリーを記述するだけで済みます。たとえば、次のスクリプトでは、HKEY_CLASSES_ROOT と HKEY_CURRENT_USER の両方のパース ツリーに MyVeryOwnKey キーを追加します。
HKCR
{
'MyVeryOwnKey' = s 'HowGoesIt?'
}
HKEY_CURRENT_USER
{
'MyVeryOwnKey' = s 'HowGoesIt?'
}
メモ : |
---|
レジストラ スクリプトでは、トークンの最大サイズは 4 KB です。トークンとは、構文で認識できるすべての要素です。前のスクリプト例では、HKCR, HKEY_CURRENT_USER、'MyVeryOwnKey'、および 'HowGoesIt?' はすべてトークンです。 |