Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
You can define one or more parse trees in your registrar script, where each parse tree has the following form:
<root-key>{<registry expression>}+
where:
<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 non-null character.<Key-Value> ::=
<Key-Type> <Key-Name><Key-Type> ::=
s
|d
Note
HKEY_CLASSES_ROOT
and HKCR
are equivalent; HKEY_CURRENT_USER
and HKCU
are equivalent; and so on.
A parse tree can add multiple keys and subkeys to the <root-key>. The Registrar keeps each subkey handle open until the parser has completed parsing all of its subkeys. It's more efficient than operating on a single key at a time. Here's an example:
HKEY_CLASSES_ROOT
{
'MyVeryOwnKey'
{
'HasASubKey'
{
'PrettyCool'
}
}
}
Here, the Registrar initially opens (creates) HKEY_CLASSES_ROOT\MyVeryOwnKey
. It then sees that MyVeryOwnKey
has a subkey. Rather than close the key to MyVeryOwnKey
, the Registrar keeps the handle and opens (creates) HasASubKey
using this parent handle. (The system registry can be slower when no parent handle is open.) So, opening HKEY_CLASSES_ROOT\MyVeryOwnKey
and then opening HasASubKey
with MyVeryOwnKey
as the parent is faster than opening MyVeryOwnKey
, closing MyVeryOwnKey
, and then opening MyVeryOwnKey\HasASubKey
.