比较两个注册表文件的最简单,最快的方法是什么?


36

在计算机上安装某些东西后,我想在注册表中找到所做的更改。但是,我也想知道一般程序可以轻松完成。

Answers:


29

运行安装程序,并使用Sysinternals Process Monitor进行监视。您可以过滤数据,以便仅显示安装程序完成的操作。您甚至可以过滤到想要查看的任何操作(RegWrite,RegQueryValue等),并保存捕获以供以后查看。

替代文字

进程监视器是免费的。

您也可以使用WinDiff。您可以保存导出的注册表文件,然后对其进行比较:

替代文字

WinDiff是免费的开放源代码。

用于比较实际注册表导出文件的另一个免费软件解决方案是RegShot

RegShot是一个小的注册表比较实用程序,可让您快速拍摄注册表快照,然后将其与第二个快照进行比较-在进行系统更改或安装新的软件产品后进行比较。更改报告可以以文本或HTML格式生成,并包含快照1和快照2之间进行的所有修改的列表。此外,您还可以指定要扫描更改的文件夹(带有子缓存器)。

替代文字


RegShot快吗?(这些注册表可能很大)
Notitze

大约与导出注册表相同的速度,只需几秒钟。比较功能也只需几秒钟。非常快。
约翰·T

Regmon / Procmon并不理想,因为需要手动过滤的杂物太多。此外,Windiff无法处理大型.reg文件,WinMerge可以更好地处理该文件,甚至可以比Windiff更好地对其进行比较。就是说,我通常使用这种方法进行快速而肮脏的分析(即使通常最终会花费更多工作)。
Synetech 2012年

3
如果您已经有注册表快照并需要进行比较,则RegShot似乎没有任何用处

7

如果您碰巧有Total Commander,这很简单:

  1. 在安装之前和安装之后导出注册表(以相同的名称保存在不同的文件夹中)

  2. 打开在Total Commander这两个文件夹,突出一侧的文件,请转到文件 > 比较按内容...瞧:

在此处输入图片说明

Total Commander是共享软件,请在购买前尝试。


5

如果要比较两个注册表文件(已手动导出为文本),则有很多比较应用程序,例如WinMergeWinDiff等。

请注意:如果注册表配置单元很大,则导出可能需要一段时间,而且更糟的是,Windiff在尝试读取大.reg文件时可能会或多或少地挂起。请改用WinMerge,因为它可以处理大文件,更快地对它们进行比较,并且效果更好(有时Windiff会弄错)。


如果要在安装之前和之后比较注册表,则最好使用安装监视器。同样,它们很多,但是主要的之一是PC Magazine的InCtrl5(您可能需要付费从他们的网站下载它,尽管程序本身是免费的,所以有很多网站都提供它)。他们发布了一个称为InCtrlX的更新,大概是更好的更新。完全卸载是一个很好的商业选择。我通常喜欢旧的InCtrl5副本,但是Z-Soft卸载程序具有相同的功能并且非常出色(这是我尝试过的最好的方法);另外,它是免费的。


另一个解决方案是分析安装程序本身。也就是说,查看EXE / MSI / BAT / INF / etc。文件以亲自了解安装时的实际操作,包括对文件,注册表项,服务,驱动程序等的更改。这样,您可以完全避免整个检测过程。我发现7Zip是查看大多数可执行安装程序(例如NSIS)的最佳方法,因为您可以看到文件和脚本等。对于MSI安装程序,我建议使用Microsoft自己的ORCAInstEd。对于MSI来说,一个很好的商业工具是AdvancedInstaller


WinMerge大约需要30秒才能完成整个Windows7注册表比较。
Nicolas Raoul

@NicolasRaoul,除了系统的CPU功能外,比较还很大程度上取决于差异量。我已经比较了100MB +的文本文件和WinDiff,它们在短短几秒钟内就略有不同,而100KB的文件与WinMerge的小时数却相差甚远(我通常会在此之前终止该过程)。
Synetech

2

我使用WinMerge,但是我已经构建了一个应用程序来将WinMerge补丁文件转换为.reg格式。它适用于非M $应用程序,但是由于WinMerge不会在生成的补丁文件中维护HK,主要是用于安装/卸载。我特别有一个无法在x64 Win7上安装的应用程序,但我知道它可以工作。我将整个reg导出到file1,进行安装,将整个更改的reg导出到file2。使用WinMerge进行比较补丁,然后使用我的应用程序清除所有不必要的内容。

温普格


0

我想比较实际的配置单元而不是导出文件,并能够轻松地在它们之间复制内容。

我试过了:

  1. Registrar Register Manager 它具有内置的比较功能,可以比较您已加载的蜂箱。但是,我找不到一种简单的方法将丢失/更改的项目从一个配置单元复制到另一个配置单元,并且没有得到他们的客户支持的任何答复,因此我放弃了尝试。
  2. 超越比较专业版本还将比较您已加载的蜂箱。(您将需要使用regedit或其他工具来加载它们。)完成此操作后,比较工具可以轻松地将丢失/更改的项目从一个配置单元复制到另一个配置单元(并且当您突出显示一个项目时,便知道该副本按钮应将其复制到另一个配置单元)。它可以复制整个子树或单个键,但是您必须选择要复制的子树(或键)。有一些密钥不允许我复制。我假设它们被注册表系统本身的某种保护机制锁定。

因此,这是我详细使用的步骤。假设我想在从分区C运行时将项目从分区D(配置单元软件)上的注册表复制到注册表分区E(配置单元软件)。

  1. 运行regedit(作为分区C引导)
  2. 选择HKEY_LOCAL_MACHINE
  3. 从文件菜单,下拉LOAD HIVE
  4. 浏览到D:\ WINDOWS \ SYSTEM32 \ CONFIG \ SOFTWARE(加载该配置单元)将其命名为d-software
  5. 再次拉下LOAD HIVE。
  6. 浏览到E:\ WINDOWS \ SYSTEM32 \ CONFIG \ SOFTWARE(加载该配置单元)将其命名为e-software
  7. 超越比较
  8. 下拉新会议/注册表比较
  9. 在左窗格的地址框中输入reg:\ HKEY_LOCAL_MACHINE \ d-software
  10. 在右窗格的地址框中输入reg:\ HKEY_LOCAL_MACHINE \ e-software
  11. 等待它为下面的项目上色(正在进行实际比较)
  12. 在左侧选择一个蓝色(缺少)或红色(不同)的项目
  13. 如果要复制,请使用工具栏中的箭头,它将复制到右侧
  14. 如果您在右侧选择一个项目,它将复制到左侧。
  15. 完成后,关闭两个应用程序
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.