在Python中获取所有已安装的Windows程序的“正确”且可靠的方法?

2024-01-05

我见过很多用 python 检索 WinXP+ 上安装的程序的方法。是什么proper and 最坚固的这样做的方法?

目前我正在访问HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall并从那里读取每个键以获取列表。 (有人告诉我这不是proper我也见过使用 WMI/Win32com 来执行此操作的示例,但也看到过一些评论以及那些实现,这些实现表明 WMI 可能在某些计算机上关闭,并且这不是一个非常可靠的解决方案。

有没有一种既正确又可靠的方法来获取已安装程序的列表?我见过的 WMI 示例都不能在这台机器上运行(因此我不愿意使用它,我只运行 WinFLP;这是 XP 的精简版本。)

我似乎还找到了我的搜索发现的 TechNet 文章,该文章对我的问题提供了类似的答案:http://gallery.technet.microsoft.com/ScriptCenter/en-us/154dcae0-57a1-4c6e-8f9f-b215904485b7 http://gallery.technet.microsoft.com/ScriptCenter/en-us/154dcae0-57a1-4c6e-8f9f-b215904485b7请注意,平台下列出的 Vista/7 非常明确地表示“不”...不会工作。所以 WMI 交易似乎是不可能的......

能够检索安装的路径也是一个好处,因为现在我当前的代码不考虑安装在另一个驱动器或非默认目录中的人。


您提到的 technet 脚本在 Win 7(使用 Python 2.5 32 位)下完美运行,我真的不明白为什么它不应该。

实际上,WMI 方法的真正弱点在于它仅列出通过 Windows Installer 安装的产品。所以它不会给你完整的列表。许多程序使用不同的安装程序。只需比较 (Select * from Win32_Product) 和控制面板中显示的结果即可。因此,除非您确定列表中插入的程序是通过 MSI 安装的,否则 WMI 绝对不是答案。

所以它可能不是很Pythonic,但据我所知,最好的方法是像您所做的那样使用注册表。这实际上就是控制面板的工作方式,因此至少 Windows 认为这是最可靠的方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中获取所有已安装的Windows程序的“正确”且可靠的方法? 的相关文章

随机推荐