有没有办法跟踪Windows注册表中的更改?我想看看在安装各种程序期间注册表中发生了哪些变化。
答案 0 :(得分:45)
Process Monitor允许您监视各种进程的文件和注册表活动。
答案 1 :(得分:38)
可以监控特定程序所做的注册表更改。
http://www.nirsoft.net/utils/reg_file_from_application.html
更新:只需下载NirLauncher(包括NirSoft的所有应用程序)。它是Windows工具箱的最佳补充之一。 http://launcher.nirsoft.net/
答案 2 :(得分:11)
关于WMI和注册表:
有三个关于注册表的WMI事件类:
但您需要了解这些限制:
使用RegistryTreeChangeEvent和RegistryKeyChangeEvent,无法直接告知实际更改了哪些值或键。为此,您需要在事件之前保存注册表状态,并将其与事件后的状态进行比较。
您不能将这些类与HKEY_CLASSES_ROOT或HKEY_CURRENT_USER配置单元一起使用。您可以通过创建WMI类来表示要监视的注册表项来解决此问题:
Defining a Registry Class With Qualifiers
并将其与__InstanceOperationEvent派生类一起使用。
因此使用WMI监视注册表是可能的,但不太完美。优点是可以“实时”监控变化。另一个优势可能是WMI永久事件订阅:
一种始终监控注册表的方法,即。如果您的应用程序未运行,则会发生事件。
答案 3 :(得分:9)
在没有额外工具的情况下执行此操作的简单方法是在安装之前将注册表导出到文本文件,然后将其导出到另一个文件。然后,比较两个文件。
话虽如此,Sysinternals工具对此非常有用。
答案 4 :(得分:3)
Regshot值得一提。它扫描并拍摄所有注册表设置的快照,然后稍后再次运行它以与原始快照进行比较,并显示已更改的所有键和值。
答案 5 :(得分:2)
有一个名为sobek(http://code.google.com/p/sobek-hids/)的python-hids能够监视SO的某些部分。它对我监视文件更改工作正常,虽然文档说它能够监视注册表更改但它对我不起作用。
可轻松播放基于python的hids的软件。
答案 6 :(得分:1)
有几种不同的方式。如果你想在飞行中自己动手,WMI可能就是你想要的。 RegistryKeyChangeEvent
及其亲属是值得关注的人。可能还有一种方法可以通过__InstanceCreationEvent
,__InstanceDeletionEvent
和__InstanceModificationEvent
类来监控它。
http://msdn.microsoft.com/en-us/library/aa393040(VS.85).aspx
答案 7 :(得分:0)
我同意Franci,所有的Sysinternals公用事业都值得一看(Autoruns也是必须的),而Process Monitor,它取代了旧的Filemon和Regmon是非常珍贵的。
除了您想要的用法之外,了解进程失败的原因(例如尝试访问不存在的文件或注册表项等)非常有用。
答案 8 :(得分:0)
PhiLho已经提到了AutoRuns,但我认为值得详细说明。
它不会扫描整个注册表,只包含对自动加载的内容(EXE,DLL,驱动程序等)的引用的部分,这可能是您感兴趣的内容。它不跟踪更改但可以导出到文本文件,因此您可以在安装之前和之后运行它并执行diff。
答案 9 :(得分:0)
使用虚拟机时,我使用以下步骤检查注册表更改:
HKLM\SYSTEM
或HKLM\SOFTWARE
现在使用您喜欢的差异程序比较“之前”和“之后”快照。