了解分析树

可以在注册器脚本中定义一个或多个分析树,其中每个分析树都具有以下形式:

<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> ::=
  任何非 null 字符。

<Key-Value> ::=
<Key-Type> <Key-Name>

<Key-Type> ::=
s | d

注意

HKEY_CLASSES_ROOTHKCR 等效;HKEY_CURRENT_USERHKCU 等效;以此类推。

分析树可以将多个键和子项添加到 <root-key>。 注册器使每个子项句柄保持打开状态,直到分析程序已完成对其所有子项的分析。 与一次操作一个键相比,它会更高效。 下面是一个示例:

HKEY_CLASSES_ROOT
{
    'MyVeryOwnKey'
    {
        'HasASubKey'
        {
            'PrettyCool'
        }
    }
}

在此处,注册器首先打开(创建)HKEY_CLASSES_ROOT\MyVeryOwnKey。 然后,它会看到 MyVeryOwnKey 包含一个子项。 注册器保留句柄并使用此父句柄打开(创建)HasASubKey,而不是关闭 MyVeryOwnKey 的键。 (当没有父句柄处于打开状态时,系统注册表速度可能会减慢。)因此,打开 HKEY_CLASSES_ROOT\MyVeryOwnKey,然后使用 MyVeryOwnKey 作为父句柄打开 HasASubKey,这样速度会比打开 MyVeryOwnKey、关闭 MyVeryOwnKey,然后打开 MyVeryOwnKey\HasASubKey 的操作更快。

另请参阅

创建注册器脚本