假设我在 Windows 上安装软件,我想查看它在安装过程中所做的所有更改,那么跟踪系统更改的最简单方法是什么?更改可能发生在程序/系统文件或注册表等中,是否有跟踪这些更改的工具?这可能很有用,例如,在补丁安装中,管理员可能希望跟踪它所做的所有更改。
答案1
Sysinternal 的进程监视器可能在这里派上用场。虽然它可能有点太冗长,但您可以过滤掉其他进程并进行调整,直到它最适合您。启动它并扫描,然后开始安装并在完成后停止。
进程监控
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
可能还有其他自由的针对已启动的二进制安装的特定解决方案,但我不知道它们。
快速更新
我同意 Evan 的观点,至少对于注册表来说,如果太冗长,你可能需要在安装之前和之后运行导出。Windows 2003 支持工具随附执行程序(用于查找注册表中两个 .reg 文件之间的差异的老方法)。
答案2
您想制作“穷人的快照”。当我使用 WIX 为第三方软件构建自己的 MSI 时,我经常这样做。
对于您要执行的操作,进程监视器可能有点太冗长了。您可以尝试使用以下方法创建注册表的“快照”:
REGEDIT /E BEFORE.REG
然后再重复一次,以便您可以进行比较。
对于文件系统,我使用了免费软件实用程序“文件列表“来生成文件系统的“之前”和“之后”的快照。
在现有文件内进行修改是有问题的。您可能需要拍摄初始快照,找到已修改的文件,然后回滚(我通常使用 VM 和内置磁盘快照功能进行回滚)并拍摄每个您知道将被修改的文件的“之前”快照,以便与“之后”版本进行比较。
请记住,捕获更改的内容与捕获安装程序的逻辑不是一回事。如果可能,最好对安装程序进行逆向工程,而不是仅仅尝试捕获更改的内容。由于快照计算机的配置情况,您可能会错过您没有看到的细微差别。
Windows 2000 Server 附带的旧版 WinInstall 2003 LE 在生成此类快照以供参考方面做得相当不错,但它生成的 MSI 却很糟糕。(我放弃使用它,并开始自己“手动”制作快照,如上所述。)
答案3
答案4
您可以使用 Installshield 产品打开软件包,这样您无需实际安装即可知道它将做什么。该产品还集成了一个捕获工具,用于在安装前/安装后进行快照