当前位置: 首页 > 面试题库 >

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

督德明
2023-03-14
问题内容

我们需要创建一个程序..实际上我们被要求创建一个软件许可合规性工具....我们如何检查机器内部已安装的软件..是否通过注册表…在搜索时我看到了一个帖子说我们需要研究HKLM的“卸载”子项。

另外,我们是否还从注册表中获取有关该软件是否为免费软件,共享软件的信息?

我们计划使用Python和Mysql做到这一点


问题答案:

正如您已经提到的,可以在注册表中的注册表项下找到(正确)安装的程序列表。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

例如,请参见此处,或使用google了解更多信息。使用一下该键regedit,结构id相当明显。

有关使用python访问注册表的信息,请参见_winreg – python标准库文档中的Windows注册表访问。

请注意,总是有某些软件未在注册表中显示:某些软件仍然可以通过将其放在目录中来安装,您不会被这些家伙所吸引…

对于第二部分,无法通过查看注册表来告知许可证类型或许可状态(即,已正确许可)。没有标准的方法来存储此信息。最好的办法是编译尽可能多的程序列表(您必须手工完成,即使对于Office,Adobe等标准程序也很费时),并存储所有必要的信息(例如,注册表中的GUID密钥,许可证类型等)。

然后,您的工具可以将当前安装的程序列表与列表进行比较,并可能检查许可状态。作为第一步,这将更加困难,因为每个软件都有它自己的(通常是秘密的!)存储方式-毕竟,如果此信息可访问,也可以伪造。

然后,您的工具可以将其发现和不在列表中的任何程序通知系统管理员,他将不得不手动检查许可。您可以提供一些组织上的帮助来管理此信息,甚至可以更新数据库以备将来使用。



 类似资料:
  • 问题内容: 我需要检查系统上是否安装了特定程序。例如,我的程序需要检查系统中是否安装了 FireFox 。如果已安装程序,那么我想找到该特定程序的 安装目录 。 我发现了这个,但这不是在Java中。我读了这个,但仍然无法解决这个问题 问题答案: 每个软件(例如Firefox)都会在以下路径下创建它的条目 Firefox也在相同路径下创建它。在我的机器上 是实现这一目标的途径。 此路径的存在确认了F

  • 问题内容: 检查Centos / Redhat中安装的软件包列表的Python方式? 在bash脚本中,我将执行以下操作: 问题答案: TransactionSet()将打开RPM数据库 没有参数的dbMatch将设置一个匹配迭代器以遍历整套已安装的软件包,您可以在匹配迭代器上调用next来获取下一个条目,即代表一个软件包的标头对象 dbMatch也可以用于查询特定的程序包,您需要传递标签的名称以

  • 我使用javascript来检查是否安装了应用程序,如果我的应用程序已安装,我想打开我的应用程序,否则它会重定向到play store帐户。问题是,它被重定向到播放商店,即使我已经安装了应用程序 这是我的. html文件,我正在其中检查应用程序。

  • 问题内容: 我正在用Java编写数据库验证工具,并具有首选项屏幕,以便用户可以定义其数据库连接。该工具至少应能够应付DB2,Oracle,Postgresql和Mysql。 我真正想要的是能够向用户提供他们已安装的jdbc驱动程序列表,作为此过程的一部分。 任何人都可以提供用于发现已安装的JDBC驱动程序的代码段吗? 问题答案: 到目前为止,您需要扫描整个类路径(和子文件夹)以查找实现类的类。这样

  • 问题内容: 如何找到已安装的node.js / npm 软件包 的版本? 这将打印npm本身的版本: 这将显示一个神秘的错误: 这将 在注册表上 打印软件包版本(即可用的最新版本): 如何获得已 安装的版本 ? 问题答案: 用于本地软件包或全局安装的软件包。 您可以通过传递特定软件包的名称作为参数来查找其版本。例如,将导致: 或者,您可以直接运行而无需将软件包名称作为参数来查看所有软件包的版本:

  • 问题内容: 有没有办法检查在我的机器上全局安装的angular-cli的特定版本?我在Windows环境中。 npm -v 和 node -v分别 只给我npm和node的版本,我似乎找不到任何与 ng相关的 命令。 我正在尝试运行一个我正在处理的项目,并且该项目使用npm在旧版本的angular- cli上运行。但是,在安装其他演示项目之后,如果不卸载并重新安装特定版本的angular-cli,