关于脱机注册表库

脱机注册表库用于修改活动系统注册表外部的注册表配置单元。

脱机注册表库适用于注册表更新方案,例如维护操作系统映像。 脱机注册表函数提供以下功能,这些功能不适用于标准注册表函数:

  • 脱机注册表函数可用于修改任何受支持的注册表格式的注册表配置单元。 标准注册表函数只能对活动注册表配置单元进行更改,并且这些更改必须与系统上运行的Windows版本兼容。
  • 脱机注册表库只需要读取访问权限才能打开注册表配置单元文件和写入访问权限以保存文件。 不会对 hive 中的对象执行其他访问检查,因此可以使用标准用户权限修改 hive。 使用标准注册表功能,将 hive 加载到活动注册表是需要管理访问权限的特权操作。

由于以下原因,不应将脱机注册表函数用作系统注册表函数的替代方法:

  • 无法使用脱机注册表函数在进程之间共享注册表配置单元。
  • 脱机注册表函数使用简单的锁定,这可能导致多线程应用程序的性能严重下降。
  • 在调用 ORSaveHive 函数之前,不会保存对脱机注册表函数所做的更改。

应用程序不应使用脱机注册表函数绕过系统注册表的安全要求。 若要加载 hive,在没有 RegLoadKey 函数所需的特殊特权的情况下运行的应用程序可以使用 RegLoadAppKey 函数。

Windows Server 2003 和 Windows XP:不支持 RegLoadAppKey 函数。

脱机注册表配置单元是使用脱机注册表函数加载到内存中的注册表配置单元。 若要创建空的脱机注册表配置单元,请使用 ORCreateHive 函数。 若要修改现有注册表配置单元,请使用 RegSaveKeyRegSaveKeyEx 函数将 hive 从活动系统注册表保存到文件,然后使用 OROpenHive 函数打开该文件。

ORCreateHiveOROpenHive 函数返回脱机注册表配置单元的根键的句柄。 此句柄可以像对脱机注册表配置单元中任何其他键的句柄一样使用,但有以下例外情况: ORCreateKeyOROpenKey 函数不能用于将句柄返回到根键: ORCloseKey 函数不能用于关闭根键; ORDeleteKey 函数不能用于删除根密钥。 在所有这些情况下,函数将失败 并ERROR_INVALID_PARAMETER

使用 ORCreateKey 函数将键添加到打开的脱机注册表配置单元和 ORSetValue 函数以设置键的值。 脱机注册表库支持其他基本注册表操作,例如枚举、检索和删除键和值,以及设置安全与虚拟化行为等键属性。 有关函数的列表,请参阅 脱机注册表库函数

若要保存对打开的脱机注册表配置单元所做的更改,请使用 ORSaveHive 函数将 hive 保存到文件中。 (除非调用 ORSaveHive ,否则更改不会持久保存。) 保存 hive 后,请使用 ORCloseHive 函数关闭与之关联的 hive 和释放资源。

仅当使用 OROpenHive 函数打开脱机注册表配置单元时,才会对其进行验证。 如果 hive 已损坏,则操作会失败;不会尝试修复 hive。 在配置单元中加载到具有 RegLoadKey 函数的活动注册表之前,不会对 hive 中的对象执行访问检查。

脱机注册表函数不支持 预定义的键

传递给脱机注册表函数的所有键和值名称字符串必须是 Unicode。

脱机注册表Library_Functions