パース ツリーについて
更新 : 2007 年 11 月
レジストラ スクリプトでは、パース ツリーを 1 つ以上定義できます。各パース ツリーの形式は、次のとおりです。
<root key>{<registry expression>}+
指定項目 :
<root key> ::= 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
<registry expression> ::= <Add Key> | <Delete Key>
<Add Key> ::= [ForceRemove | NoRemove | val]<Key Name>
[<Key Value>][{< Add Key>}]
<Delete Key> ::= Delete<Key Name>
<Key Name> ::= '<AlphaNumeric>+'
<AlphaNumeric> ::= any character not NULL, i.e. ASCII 0
<Key Value> ::== <Key Type><Key Name>
<Key Type> ::= s | d
<Key Value> ::= '<AlphaNumeric>'
メモ : |
---|
HKEY_CLASSES_ROOT と HKCR は等しく、HKEY_CURRENT_USER と HKCU は等しい、のように対応しています。 |
パース ツリーでは、<root key> に複数のキーとサブキーを追加できます。その場合、パーサーがすべてのサブキーの解析を完了するまで、パース ツリーのサブキーのハンドルは開いたままになります。この方法は、次の例に示すように、一度に 1 つのキーを処理するよりも効率的です。
HKEY_CLASSES_ROOT
{
'MyVeryOwnKey'
{
'HasASubKey'
{
'PrettyCool?'
}
}
}
ここでは、レジストラが最初に HKEY_CLASSES_ROOT\MyVeryOwnKey を開くかまたは作成します。次に、レジストラは、MyVeryOwnKey にサブキーがあることを見つけます。レジストラは、MyVeryOwnKey のキーを閉じずにハンドルを保持し、この親ハンドルを使用して HasASubKey を開くかまたは作成します。親ハンドルを開かない場合、レジストリが遅くなることがあります。したがって、まず HKEY_CLASSES_ROOT\MyVeryOwnKey を開き、次に MyVeryOwnKey を親にして HasASubKey を開いた方が、MyVeryOwnKey を開いてからいったん閉じ、その後で MyVeryOwnKey\HasASubKey を開いた場合に比べて処理が速くなります。