0

同一个编译的 .Net / C++ / Com 程序在两台看似相同的计算机上做不同的事情。两者都安装了数十件东西。我想通过查看 ASCII 差异来弄清楚两者之间的区别。在此之前,我需要以简单易读的格式“序列化”已安装内容的列表 - 按字母顺序排序 + 每行一个项目。

Python 脚本是理想的,但我也安装了 Perl、PowerShell。

谢谢你。

4

4 回答 4

1

就我个人而言,我一直很喜欢 sysinternals 的东西(功能强大、轻便、实用的工具 - 无需安装)

有命令行工具psinfo可以在本地或远程计算机上以各种格式为您提供您想要的(然后是一些),区分修补程序和已安装的软件(提供系统策略允许远程)。

你也可以从这里实时运行它,所以虽然不是严格意义上的 Pythonic,但你可以很好地插入它。

于 2010-03-25T10:24:48.460 回答
1

您可以从注册表中获取已安装程序的列表。它位于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall下

如果这是一次性练习,您甚至可能不需要编写任何代码 - 只需使用 Regedit 将密钥导出到 .REG 文件即可。如果您确实想自动化它,Python 提供了_winreg模块用于注册表访问。

于 2010-03-20T05:38:44.560 回答
1

取自从命令行列出已安装的软件

如果要从命令行列出 Windows Management Instrumentation (WMI) 已知的软件,请使用 WMI 命令行 (WMIC) 界面。

要列出本地安装的所有产品,请运行以下命令:

wmic product

警告:这个命令似乎只列出通过 Windows Installer 安装的软件。请参见Win32_Product 类

于 2012-07-10T11:14:10.340 回答
1

您可能需要 Microsoft 提供的两种工具:RegDumpRegDiff您可以从不同的地方下载它们,包括作为 Microsoft Vista 徽标测试工具包的一部分。

此外,还有 Microsoft 支持文章How to Use WinDiff to Compare Registry Files

对于 Pythonic 方式,是一个 ActiveState 配方,用于获取特定键的所有子键的格式化输出(例如HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)。

于 2010-03-24T12:51:13.117 回答