パース ツリーを理解する
レジストラー スクリプトで 1 つ以上のパース ツリーを定義できます。各パース ツリーの形式は次のとおりです。
<ルート キー>{<レジストリ式>}+
どこで:
<ルート キー> ::=
HKEY_CLASSES_ROOT
|HKEY_CURRENT_USER
|
HKEY_LOCAL_MACHINE
|HKEY_USERS
|
HKEY_PERFORMANCE_DATA
|HKEY_DYN_DATA
|
HKEY_CURRENT_CONFIG
|HKCR
|HKCU
|
HKLM
|HKU
|HKPD
|HKDD
|HKCC
<レジストリ式> ::=
<追加キー> | <削除キー><追加キー> ::=
[ForceRemove
|NoRemove
|val
] <キー名> [<キー値>] [{
<追加キー>}
]<削除キー> ::=
Delete
<キー名><キー名> ::=
'
<英数字>+'
<英数字> ::=
null 以外の任意の文字。<キー値> ::=
<キーの種類><キー名><キー型> ::=
s
|d
Note
HKEY_CLASSES_ROOT
と HKCR
、HKEY_CURRENT_USER
と HKCU
、などは等価です。
パース ツリーでは、複数のキーとサブキーを <ルート キー> に追加できます。 レジストラーでは、パーサーによるすべてのサブキーの解析が完了するまで、各サブキー ハンドルを開いた状態に保ちます。 その方が、一度に 1 つのキーに対して操作を行うよりも効率的です。 次に例を示します。
HKEY_CLASSES_ROOT
{
'MyVeryOwnKey'
{
'HasASubKey'
{
'PrettyCool'
}
}
}
ここでは、レジストラーが最初に HKEY_CLASSES_ROOT\MyVeryOwnKey
を開きます (作成します)。 次に、MyVeryOwnKey
にサブキーがあることを確認します。 レジストラーでは、MyVeryOwnKey
のキーを閉じるのではなく、そのハンドルを維持し、この親ハンドルを使って HasASubKey
を開きます (作成します)。 (親ハンドルが開いていない場合、システム レジストリの速度が低下する可能性があります。)そのため、HKEY_CLASSES_ROOT\MyVeryOwnKey
を開いた後、MyVeryOwnKey
を親として使って HasASubKey
を開く方が、MyVeryOwnKey
を開き、MyVeryOwnKey
を閉じてから MyVeryOwnKey\HasASubKey
を開くよりも高速です。