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


Примеры скриптов реестра

Примеры сценариев в этом разделе демонстрируют, как добавить ключ в системный реестр, зарегистрировать 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' все маркеры.

См. также

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