跟踪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,驱动程序等),这可能是你感兴趣的。它不会跟踪更改,但可以导出到文本文件,所以你可以在安装之前和之后运行它,并做一个差异 。