跟踪Windowsregistry中的更改

有没有办法来跟踪Windowsregistry的变化? 我想看看在安装各种程序时,registry中有哪些变化。

可以监视特定程序所做的registry更改。

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

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

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

关于WMI和registry:

有三个有关registry的WMI事件类:

  • RegistryTreeChangeEvent
  • RegistryKeyChangeEvent
  • RegistryValueChangeEvent

registry事件类

但是你需要知道这些限制:

  • 使用RegistryTreeChangeEvent和RegistryKeyChangeEvent,没有办法直接告诉哪些值或键实际上已经改变。 为此,您需要在事件之前保存registry状态,并将其与事件之后的状态进行比较。

  • 您不能使用这些类与HKEY_CLASSES_ROOT或HKEY_CURRENT_USERconfiguration单元。 您可以通过创build一个WMI类来表示要监视的registry项来克服此问题:

使用限定符定义registry类

并使用它与__InstanceOperationEvent派生类。

所以使用WMI来监控registry是可能的,但不是那么完美。 优点是可以监视“实时”的变化。 另一个优势可能是WMI永久事件订阅:

始终接收活动

一种随时监测登记处的方法, 事件,如果你的应用程序没有运行。

一个简单的方法是在安装之前将registry导出到文本文件,然后将其导出到另一个文件。 然后,比较这两个文件。

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

有一个名为sobek( http://code.google.com/p/sobek-hids/ )的python-hids能够监视SO的某些部分。 这对我的监控文件更改工作正常,虽然文件sais它能够监视registry更改它不适用于我。

好的一款软件,可以很容易地使用基于python的隐藏function。

有几种不同的方法。 如果你想在飞行中自己动手,WMI很可能就是要走的路。 RegistryKeyChangeEvent和它的亲属是要看的。 有可能通过__InstanceCreationEvent__InstanceDeletionEvent__InstanceModificationEvent类来监视它。

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

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

我同意Franci的观点,所有Sysinternals公用事业公司都值得一看(Autoruns也是必须的),Process Monitor取代了旧的Filemon和Regmon。

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

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

它不扫描整个registry,只是包含自动加载的东西的引用部分(EXE,DLL,驱动程序等),这可能是你感兴趣的。它不会跟踪更改,但可以导出到文本文件,所以你可以在安装之前和之后运行它,并做一个差异 。