同一个编译的 .Net / C++ / Com 程序在两台看似相同的计算机上做不同的事情。两者都安装了数十件东西。我想通过查看 ASCII 差异来弄清楚两者之间的区别。在此之前,我需要以简单易读的格式“序列化”已安装内容的列表 - 按字母顺序排序 + 每行一个项目。
Python 脚本是理想的,但我也安装了 Perl、PowerShell。
谢谢你。
同一个编译的 .Net / C++ / Com 程序在两台看似相同的计算机上做不同的事情。两者都安装了数十件东西。我想通过查看 ASCII 差异来弄清楚两者之间的区别。在此之前,我需要以简单易读的格式“序列化”已安装内容的列表 - 按字母顺序排序 + 每行一个项目。
Python 脚本是理想的,但我也安装了 Perl、PowerShell。
谢谢你。
您可以从注册表中获取已安装程序的列表。它位于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall下
如果这是一次性练习,您甚至可能不需要编写任何代码 - 只需使用 Regedit 将密钥导出到 .REG 文件即可。如果您确实想自动化它,Python 提供了_winreg模块用于注册表访问。
取自从命令行列出已安装的软件:
如果要从命令行列出 Windows Management Instrumentation (WMI) 已知的软件,请使用 WMI 命令行 (WMIC) 界面。
要列出本地安装的所有产品,请运行以下命令:
wmic product
警告:这个命令似乎只列出通过 Windows Installer 安装的软件。请参见Win32_Product 类
您可能需要 Microsoft 提供的两种工具:RegDump和RegDiff。您可以从不同的地方下载它们,包括作为 Microsoft Vista 徽标测试工具包的一部分。
此外,还有 Microsoft 支持文章How to Use WinDiff to Compare Registry Files。
对于 Pythonic 方式,这是一个 ActiveState 配方,用于获取特定键的所有子键的格式化输出(例如HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)。