Примеры скриптов реестра
Примеры сценариев в этом разделе демонстрируют, как добавить ключ в системный реестр, зарегистрировать COM-сервер регистратора и указать несколько деревьев синтаксического анализа.
Добавление ключа в HKEY_CURRENT_USER
В следующем дереве синтаксического анализа показан простой сценарий, который добавляет один ключ в системный реестр. В частности, скрипт добавляет ключ , MyVeryOwnKey
в HKEY_CURRENT_USER
. Он также назначает строковое значение HowGoesIt
по умолчанию новому ключу:
HKEY_CURRENT_USER
{
'MyVeryOwnKey' = s 'HowGoesIt'
}
Этот скрипт можно легко расширить для определения нескольких подразделов следующим образом:
HKCU
{
'MyVeryOwnKey' = s 'HowGoesIt'
{
'HasASubkey'
{
'PrettyCool' = d '55'
val 'ANameValue' = s 'WithANamedValue'
}
}
}
Теперь скрипт добавляет вложенный ключ, HasASubkey
в MyVeryOwnKey
. В этот подраздел добавляется как подраздел (со значением по умолчанию DWORD
55), так PrettyCool
и ANameValue
именованным значением (со строковым значениемWithANamedValue
).
Регистрация COM-сервера регистратора
Следующий скрипт регистрирует сам com-сервер регистратора.
HKCR
{
ATL.Registrar = s 'ATL Registrar Class'
{
CLSID = s '{44EC053A-400F-11D0-9DCD-00A0C90391D3}'
}
NoRemove CLSID
{
ForceRemove {44EC053A-400F-11D0-9DCD-00A0C90391D3} = s 'ATL Registrar Class'
{
ProgID = s 'ATL.Registrar'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
}
}
}
Во время выполнения в это дерево синтаксического анализа добавляет ATL.Registrar
ключ HKEY_CLASSES_ROOT
. Для этого нового ключа он затем:
Указывает
ATL Registrar Class
в качестве строкового значения ключа по умолчанию.Добавляет
CLSID
в качестве подраздела.Указывает
{44EC053A-400F-11D0-9DCD-00A0C90391D3}
дляCLSID
. (Это значение — CLSID регистратора для использования сCoCreateInstance
.)
Так как CLSID
он является общим, его не следует удалять в режиме отмены регистрации. Оператор , NoRemove CLSID
делает это, указывая, что CLSID
следует открывать в режиме регистрации и игнорироваться в режиме отмены регистрации.
Инструкция ForceRemove
предоставляет функцию ведения дома, удаляя ключ и все его вложенные ключи перед повторной созданием ключа. Это может быть полезно, если имена вложенных ключей изменились. В этом примере сценариев проверяет, ForceRemove
существует ли {44EC053A-400F-11D0-9DCD-00A0C90391D3}
уже существует. Если это делает, : ForceRemove
Рекурсивно удаляет
{44EC053A-400F-11D0-9DCD-00A0C90391D3}
и все его вложенные ключи.Повторно создает
{44EC053A-400F-11D0-9DCD-00A0C90391D3}
.Добавляется
ATL Registrar Class
в качестве строкового значения по умолчанию для{44EC053A-400F-11D0-9DCD-00A0C90391D3}
.
Дерево синтаксического анализа теперь добавляет в нее два новых подраздела {44EC053A-400F-11D0-9DCD-00A0C90391D3}
. Первый ключ ProgID
возвращает строковое значение по умолчанию, которое является ProgID. Второй ключ InprocServer32
, получает строковое значение по умолчанию, %MODULE%
то есть значение препроцессора, описанное в разделе ,Использование заменяемых параметров (препроцессор регистратора) этой статьи. InprocServer32
также получает именованное значение, ThreadingModel
со строковым значением Apartment
.
Указание нескольких деревьев синтаксического анализа
Чтобы указать несколько деревьев синтаксического анализа в скрипте, просто поместите одно дерево в конец другого. Например, следующий скрипт добавляет ключ, MyVeryOwnKey
в деревья синтаксического анализа для обоих HKEY_CLASSES_ROOT
и HKEY_CURRENT_USER
:
HKCR
{
'MyVeryOwnKey' = s 'HowGoesIt'
}
HKEY_CURRENT_USER
{
'MyVeryOwnKey' = s 'HowGoesIt'
}
Примечание.
В скрипте регистратора 4K — это максимальный размер токена. (Маркер является любым распознаваемым элементом в синтаксисе.) В предыдущем примере скрипта , HKCR
, HKEY_CURRENT_USER
'MyVeryOwnKey'
и 'HowGoesIt'
все маркеры.