如何直接合并 Windows 注册表配置单元而不将它们转换为基于文本的中间文件?

Reg*_*rar -10 windows windows-registry

帮助!如果我明天之前不知道如何做到这一点,我就会被解雇。

Microsoft Windows以专有的二进制格式存储其注册表数据库(称为“注册表配置单元” ,这个名称的起源实际上有一个背景故事,但我离题了)。

正确回答,否则您将失去工作:

  1. 设 H-sub-A 为计算机 A 的注册表配置单元,让 H-sub-B 为计算机 B 的注册表配置单元。

  2. 创建一个注册表配置单元 H-sub-A-prime(采用本机二进制格式),其中包含 H-sub-A 和 H-sub-B 中的所有注册表项和值。如果有重叠,让 H-sub-B 中的值覆盖 H-sub-A 中的值。

  3. 当然,您可以导入一个基于文本的补丁文件(例如,“FOO.REG”)来修改注册表,但是您可以将两个注册表配置单元以其原生二进制格式合并吗?

涉及将注册表导出到文本文件(例如,“FOO.REG”)的答案将不计分。您只能使用 Microsoft Windows(任何版本)附带的软件和/或免费的第三方工具。

bwD*_*aco 10

您可以通过将这些配置单元加载到注册表本身的临时键中并使用reg命令将一个配置单元复制到另一个配置单元来合并这些配置单元。

考虑到问题的性质,请注意,对于因使用此答案而可能产生的任何损害,我概不负责。有关更多信息,请参阅Stack Exchange 网络服务条款

我实际上使用虚拟数据在 Windows 7 机器上自己测试了这些命令,没有更改注册表中的任何现有数据,因此它们应该可以工作。我假设注册表配置单元文件已提供给您;如果不是,您可能需要通过引导到 Linux live CD 并从计算机的硬盘驱动器中检索文件来获取它们。我无法通过reg save提升的命令提示符将它们导出到实时系统上,只会Access is denied出现错误。

如果配置单元作为每台计算机的多个文件提供,并且需要将它们作为一个单元进行操作,则您需要使用下文讨论的相同技术在注册表中加载并合并它们,在对应于在将计算机 B 的完整配置单元复制到计算机 A 之前,从其派生配置单元文件的计算机。否则,您可以使用以下过程单独合并每个配置单元。

  • 假设 hive H A存储在 file 中Ha.hiv,hive H B存储在 file 中Hb.hiv。首先HKLM\Temp使用注册表编辑器创建一个键,然后在提升的命令提示符中使用这些命令将H AH B加载到任一计算机上的临时键中:

    reg load HKLM\Temp\Ha Ha.hiv
    reg load HKLM\Temp\Hb Hb.hiv
    
    Run Code Online (Sandbox Code Playgroud)
  • H B的内容复制到H A 中,覆盖任何现有的键和值:

    reg copy HKLM\Temp\Hb HKLM\Temp\Ha /s /f
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用注册表编辑器卸载注册表配置单元文件,方法是选择注册表Ha项,在文件菜单下选择卸载配置单元,然后对. 然后您可以删除临时密钥。(不起作用;我自己尝试过并得到了,但我能够通过注册表编辑器来完成。)HbHKLM\Tempreg unloadAccess is denied

  • 合并的配置单元H A ' 现在存储在Ha.hiv.

有关该reg命令的详细信息,请参阅http://technet.microsoft.com/en-us/library/cc732643.aspx