RegOverridePredefKey 函数 (winreg.h)

将预定义的注册表项映射到指定的注册表项。

语法

LSTATUS RegOverridePredefKey(
  [in]           HKEY hKey,
  [in, optional] HKEY hNewHKey
);

参数

[in] hKey

以下 预定义键之一的句柄:

  • HKEY_CLASSES_ROOT
  • HKEY_CURRENT_CONFIG
  • HKEY_CURRENT_USER
  • HKEY_LOCAL_MACHINE
  • HKEY_PERFORMANCE_DATA
  • HKEY_USERS

[in, optional] hNewHKey

打开的注册表项的句柄。 此句柄由 RegCreateKeyExRegOpenKeyEx 函数返回。 它不能是预定义键之一。 函数映射 hKey 以引用 hNewHKey 键。 这仅影响调用进程。

如果 hNewHKeyNULL,则该函数将还原预定义密钥的默认映射。

返回值

如果函数成功,则返回值为 ERROR_SUCCESS。

如果函数失败,则返回值为 Winerror.h 中定义的非零错误代码。 可以将 FormatMessage 函数与 FORMAT_MESSAGE_FROM_SYSTEM 标志一起使用,以获取错误的泛型说明。

注解

RegOverridePredefKey 函数适用于软件安装程序。 它允许他们重新映射预定义的密钥,加载将安装在系统上的 DLL 组件,调用 DLL 中的入口点,并检查组件尝试对注册表所做的更改。 然后,安装程序可以将这些更改写入 DLL 所需的位置,或在写入数据之前对数据进行更改。

例如,请考虑在应用程序安装过程中安装 ActiveX 控件的安装程序。 安装程序需要调用控件的 DllRegisterServer 入口点,使控件能够注册自身。 在此调用之前,安装程序可以调用 RegOverridePredefKey将HKEY_CLASSES_ROOT 重新映射到临时密钥,例如 HKEY_CURRENT_USER\TemporaryInstall\DllRegistration。 然后,它会调用 DllRegisterServer,这会导致 ActiveX 控件将其注册表项写入临时键。 然后,安装程序再次调用 RegOverridePredefKey 以还原 HKEY_CLASSES_ROOT的原始映射。 如有必要,安装程序可以修改写入临时密钥的密钥,然后再将其复制到原始 HKEY_CLASSES_ROOT

调用 RegOverridePredefKey 后,可以安全地调用 RegCloseKey 以关闭 hNewHKey 句柄。 系统保留自己对 hNewHKey 的引用。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winreg.h (包括 Windows.h)
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

DllRegisterServer

注册表函数

注册表概述