使用程序检查已安装的软件

0 投票
2 回答
3377 浏览
提问于 2025-04-16 12:52

我们需要创建一个程序……其实是被要求开发一个软件许可合规工具……我们该怎么检查机器里安装了哪些软件呢?

是通过注册表吗……在搜索的时候,我看到一篇帖子说我们需要查看HKLM的“uninstall”子键。

另外,我们能从注册表中获取软件是免费软件、共享软件还是有许可证的信息吗???

我们打算用Python和Mysql来实现这个。

2 个回答

0

你可以使用AutoIt,这是一种强大的脚本语言,专门用于Windows系统。它的接口非常好用,简单易懂。

1

正如你提到的,已经安装的程序列表可以在注册表中找到,具体位置在这个键下:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

你可以看看这里,或者用谷歌搜索更多信息。使用regedit查看这个键,结构是相当明显的。

如果你想用Python访问注册表,可以查看_winreg – Windows注册表访问,这是Python标准库的文档。

需要注意的是,有些软件可能不会出现在注册表里:有些软件可以通过直接放在一个文件夹里安装,你是无法找到这些软件的……

至于第二部分,没有办法通过查看注册表来判断软件的许可证类型或许可状态(也就是说,是否是合法授权的)。没有标准的方法来存储这些信息。你能做的最好就是尽量列出你能找到的程序(这需要手动完成,即使是像Office、Adobe这样的常见程序也会很耗时间),并把所有必要的信息(比如注册表中的GUID键、许可证类型等)存储在一个数据库里。

然后你的工具可以将当前安装的程序列表与这个列表进行比较,可能还会检查许可证状态。这一步会更难,因为每个软件都有自己(大多数情况下是秘密的!)存储这些信息的方法——毕竟,如果这些信息可以被访问,那也可能被伪造。

接着,你的工具可以将发现的结果告知系统管理员,对于那些不在列表上的程序,他需要手动检查它们的许可证。你可以提供一些组织上的帮助来管理这些信息,甚至可能为将来的使用更新数据库。

希望这些对你有帮助

马丁

撰写回答