注册表脚本示例

本主题中的脚本编写示例演示了如何将项添加到系统注册表、注册注册器 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 中。 在此子项中,它同时添加了 PrettyCool 子项(DWORD 的默认值为 55)和 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 为子项。

  • CLSID 指定 {44EC053A-400F-11D0-9DCD-00A0C90391D3}。 (此值是注册器的 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_ROOTHKEY_CURRENT_USER 的分析树中:

HKCR
{
    'MyVeryOwnKey' = s 'HowGoesIt'
}
HKEY_CURRENT_USER
{
    'MyVeryOwnKey' = s 'HowGoesIt'
}

注意

在注册器脚本中,4K 是最大令牌大小。 (标记是语法中任何可识别的元素。)在前面的脚本编写示例中,HKCRHKEY_CURRENT_USER'MyVeryOwnKey''HowGoesIt' 都是标记。

另请参阅

创建注册器脚本