Zrozumienie drzew parsowania

Uwaga

Aktywna biblioteka szablonów (ATL) nadal jest obsługiwana. Nie dodajemy już funkcji ani nie aktualizujemy dokumentacji.

W skrycie rejestratora można zdefiniować co najmniej jedno drzewo analizy, w którym każde drzewo analizy ma następującą postać:

<klucz> główny{<wyrażenie> rejestru}+

gdzie:

<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

<wyrażenie-rejestru> ::=
<Dodaj-Klucz> | <Usuń-Klucz>

<Add-Key> ::=
  [ForceRemove | NoRemove | val] Nazwa> [<Wartość-Klucza>] [ {Dodaj-Klucz>} ]

<Delete-Key> ::=
Delete <Nazwa klucza>

<Nazwa> klucza ::=
' <Alfanumeryczny>+'

<AlfaNumeryczne> ::=
  dowolny znak inny niż null.

<Klucz-wartość> ::=
<Typ klucza><Nazwa klucza>

<Typ> klucza ::=
s | d

Uwaga

HKEY_CLASSES_ROOT i HKCR są równoważne; HKEY_CURRENT_USER i HKCU są równoważne; i tak dalej.

Drzewo analizy może dodawać wiele kluczy i podklucza <do klucza> głównego. Rejestrator utrzymuje uchwyty do każdego podklucza otwarte, dopóki analizator nie ukończy analizowania wszystkich podkluczy. Jest to bardziej wydajne niż działanie na jednym kluczu w danym momencie. Oto przykład:

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

W tym miejscu rejestrator początkowo otwiera (tworzy) HKEY_CLASSES_ROOT\MyVeryOwnKey. Następnie widzi, że MyVeryOwnKey ma podklucz. Zamiast zamykać klucz w MyVeryOwnKey, rejestrat przechowuje uchwyt i otwiera (tworzy) HasASubKey używając tego nadrzędnego uchwytu. (Rejestr systemowy może działać wolniej, gdy nie jest otwarty żaden uchwyt nadrzędny). Dlatego otwarcie HKEY_CLASSES_ROOT\MyVeryOwnKey, a następnie otwarcie HasASubKey z MyVeryOwnKey jako elementem nadrzędnym jest szybsze niż otwarcie MyVeryOwnKey, zamknięcie MyVeryOwnKey, a następnie otwarcie MyVeryOwnKey\HasASubKey.

Zobacz też

Tworzenie skryptów rejestratora