47

有没有办法跟踪 Windows 注册表的变化?我想看看在安装各种程序期间对注册表进行了哪些更改。

4

10 回答 10

45

Process Monitor允许您监视各种进程的文件和注册表活动。

于 2008-09-27T21:03:01.167 回答
41

可以监视特定程序所做的注册表更改。

https://www.nirsoft.net/utils/reg_file_from_application.html

更新:只需下载 NirLauncher(其中包括来自 NirSoft 的所有应用程序)。它是 Windows 工具箱的最佳补充之一。 https://launcher.nirsoft.net/

于 2012-12-08T21:12:54.470 回答
11

关于 WMI 和注册表:

有关于注册表的三个 WMI 事件类:

  • RegistryTreeChangeEvent
  • RegistryKeyChangeEvent
  • 注册表值更改事件

注册表事件类

但是您需要了解这些限制:

  • 使用 RegistryTreeChangeEvent 和 RegistryKeyChangeEvent 无法直接判断哪些值或键实际更改了。为此,您需要保存事件之前的注册表状态并将其与事件之后的状态进行比较。

  • 您不能将这些类与 HKEY_CLASSES_ROOT 或 HKEY_CURRENT_USER 配置单元一起使用。您可以通过创建一个 WMI 类来表示要监视的注册表项来克服这个问题:

使用限定符定义注册表类

并将其与 __InstanceOperationEvent 派生类一起使用。

因此使用 WMI 来监控注册表是可能的,但还不够完美。优点是可以“实时”监控变化。另一个优势可能是 WMI 永久事件订阅:

随时接收事件

一种“始终”监视注册表的方法,即。如果您的应用程序未运行,则事件。

于 2008-09-28T14:21:08.707 回答
9

无需额外工具即可直接执行此操作的方法是在安装前将注册表导出到文本文件,然后在安装后将其导出到另一个文件。然后,比较这两个文件。

话虽如此,Sysinternals 工具对此非常有用。

于 2008-09-27T21:23:41.260 回答
4

Regshot在这里值得一提。它扫描并拍摄所有注册表设置的快照,然后您稍后再次运行它以与原始快照进行比较,它会显示所有已更改的键和值。

于 2016-04-11T15:01:03.180 回答
2

有一个名为 sobek ( http://code.google.com/p/sobek-hids/ ) 的 python-hids 能够监控 SO 的某些部分。它对我监视文件更改工作正常,虽然文档说它能够监视注册表更改,但对我不起作用。

一款很好的软件,可以轻松播放基于 python 的隐藏。

于 2011-11-29T14:56:07.770 回答
1

有几种不同的方法。如果您想自己动手做,WMI 可能是要走的路。RegistryKeyChangeEvent它的亲戚是值得一看的。可能有一种方法可以通过__InstanceCreationEvent,__InstanceDeletionEvent__InstanceModificationEvent类来监视它。

http://msdn.microsoft.com/en-us/library/aa393040(VS.85).aspx

于 2008-09-27T22:29:47.777 回答
1

使用 VM 时,我使用以下步骤检查注册表更改:

  1. 使用 7-Zip,打开 vdi/vhd/vmdk 文件并解压缩文件夹 C:\Windows\System32\config
  2. 运行OfflineRegistryView将注册表转换为明文
    • 将“配置文件夹”设置为您提取的文件夹
    • 将“基本密钥”设置为HKLM\SYSTEMHKLM\SOFTWARE
    • 将“子键深度”设置为“无限制”
    • 按“开始”按钮

现在使用您最喜欢的差异程序来比较“之前”和“之后”的快照。

于 2019-05-04T06:33:48.183 回答
0

我同意 Franci 的观点,所有 Sysinternals 实用程序都值得一看(Autoruns 也是必须的),而取代旧的 Filemon 和 Regmon 的 Process Monitor 也很珍贵。

除了您想要的用法之外,查看进程失败的原因(例如尝试访问不存在的文件或注册表项)等非常有用。

于 2008-09-27T21:14:16.587 回答
0

PhiLho 顺便提到了AutoRuns,但我认为它值得详细说明。

它不扫描整个注册表,只扫描包含对自动加载的事物(EXE、DLL、驱动程序等)的引用的部分,这可能是您感兴趣的。它不跟踪更改,但可以导出到文本文件,因此您可以在安装前后运行它并执行diff

于 2008-10-11T09:43:37.290 回答