Основные сведения о деревьях синтаксического анализа
Вы можете определить одно или несколько деревьев синтаксического анализа в скрипте регистратора, где каждое дерево синтаксического анализа имеет следующую форму:
<root-key>{<выражение> реестра}+
где:
<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
val
| |NoRemove
] <Key-Name> [<Key-Value>] [{
<Add-Key ]>}
<Delete-Key> ::=
Delete
<Key-Name><Key-Name> ::=
'
<Буквы>+'
<AlphaNumeric> ::=
любой символ, отличный от NULL.<Key-Value> ::=
<Key-Type> <Key-Name><Key-Type> ::=
s
|d
Примечание.
HKEY_CLASSES_ROOT
и эквивалентны; HKEY_CURRENT_USER
и HKCU
HKCR
эквивалентны; и т. д.
Дерево синтаксического анализа может добавлять несколько ключей и вложенных ключей в корневой <ключ>. Регистратор сохраняет каждый дескриптор подраздела открытым, пока средство синтаксического анализа не завершит синтаксический анализ всех его вложенных ключей. Это эффективнее, чем работа с одним ключом за раз. Приведем пример:
HKEY_CLASSES_ROOT
{
'MyVeryOwnKey'
{
'HasASubKey'
{
'PrettyCool'
}
}
}
Здесь регистратор изначально открывается (создает). HKEY_CLASSES_ROOT\MyVeryOwnKey
Затем отображается MyVeryOwnKey
вложенный ключ. Вместо закрытия ключа MyVeryOwnKey
регистратор сохраняет дескриптор и открывает (создает) HasASubKey
с помощью этого родительского дескриптора. (Системный реестр может быть медленнее, если родительский дескриптор не открыт.) Таким образом, открытие HKEY_CLASSES_ROOT\MyVeryOwnKey
и открытие с MyVeryOwnKey
помощью родительского элемента быстрее, чем MyVeryOwnKey
открытиеHasASubKey
, закрытиеMyVeryOwnKey
, а затем открытиеMyVeryOwnKey\HasASubKey
.