Поделиться через


Основные сведения о деревьях синтаксического анализа

Вы можете определить одно или несколько деревьев синтаксического анализа в скрипте регистратора, где каждое дерево синтаксического анализа имеет следующую форму:

<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> ::=
  [ForceRemoveval | | 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.

См. также

Создание скриптов регистратора