同样编译的.Net / C ++ / Com程序在两台看似相同的计算机上做了不同的事情。两者都安装了DOZENS的东西。我想通过查看ASCII差异来弄清楚两者之间的区别。在此之前,我需要以简单易读的格式“序列化”已安装的东西列表 - 按字母顺序排序+每行一个项目。
Python脚本是理想的,但我也安装了Perl,PowerShell。
谢谢。
答案 0 :(得分:1)
您可以从注册表中获取已安装程序的列表。它位于 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall
下如果这是一次性练习,您甚至可能不需要编写任何代码 - 只需使用Regedit将密钥导出到.REG文件即可。如果你想自动化它,Python提供_ winreg模块用于注册表访问。
答案 1 :(得分:1)
Microsoft提供的两种工具可能就是您所需要的: RegDump 和 RegDiff 。您可以从various places下载它们,包括作为Microsoft Vista徽标测试工具包的一部分。
此外,还有Microsoft支持文章How to Use WinDiff to Compare Registry Files。
对于Pythonic方式,here是一个ActiveState配方,用于获取特定键的所有子键的格式化输出( HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall ,例如)。
答案 2 :(得分:1)
我个人总是喜欢sysinternals的东西(强大,轻巧,实用的工具 - 无需安装)
命令行工具psinfo可以在本地或远程计算机上提供各种格式(区分修补程序和已安装的软件)(在远程时提供系统策略),可以获得您想要的(然后是一些)。
你也可以从here直播它,所以虽然不是严格的pythonic你可以很好地插上它。
答案 3 :(得分:1)
取自List installed software from the command line:
如果要列出Windows Management已知的软件 从命令行进行Instrumentation(WMI),使用WMI命令行 (WMIC)界面。
要列出本地安装的所有产品,请运行以下命令 命令:
wmic product
警告:似乎此命令仅列出通过Windows Installer安装的软件。见Win32_Product class