关于脱机注册表库

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

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

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

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

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

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

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

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

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

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

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

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

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

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

脱机注册表库函数