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

从Java获取MS-Windows安装的应用程序

郤坚诚
2023-03-14
问题内容

是否可以使用Java从Windows Vista计算机中获取已安装应用程序的列表(如来自卸载程序的列表)?


问题答案:

不是解决方案,而是解决方法!

如果没有外部API的支持,则无法使用Java
SDK获取Windows本机信息。代替使用外部API(主要由LGPL许可且未完全开放),我们可以使用shell命令来获取相同的信息。

要获取已安装的软件列表,请使用ProcessBuilder或Runtime.exec运行以下PowerShell命令之一:

  1. Get-WmiObject -class Win32_Product | Select-Object -Property Name-慢一点!它使用Win32_Product类。
  2. Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate -这样比较快,可以提供其他详细信息。这使用PS注册表提供程序。

您可以流式处理这些输出并对其进行处理。

这只是一个解决方法,根据我的分析。由于Java完全独立于平台,因此获取本机信息变得困难,并且必须使用平台本机工具(例如命令外壳,Power Shell等)。



 类似资料:
  • 我想知道列出安装在手机上的所有Twitter客户端是否可行。起初,我认为可以通过将包名与“Twitter”匹配来实现。但Android上的大多数Twitter客户端的软件包名称中都没有“Twitter”名称。 我们可以获取具有特定权限的应用程序列表,但这对我没有帮助。获取具有特定自定义意图的应用程序可能也不会有帮助,我仍然需要找到一种方法来获取处理自定义意图的应用程序列表。 这似乎不可行,但一定有

  • 问题内容: 我不是在寻找java-web- start,而是在寻找胖客户端应用程序安装工具包。我有一个独立的应用程序,其中包含几个文件(jar文件,数据文件等),并且需要执行一些非常标准的安装任务,例如向用户询问目标目录,让他们找到系统的某些部分- 选择一些按计算机或按用户配置的选项,并可能尝试检测它们的某些计算机设置。 我正在寻找类似于MSI或其他向导驱动的安装应用程序的东西。什么是Java的良

  • 我试着在我的Android手机上获取已安装应用程序的APK文件,我遵循了这个答案,它说不需要root访问。 我知道Facebook应用程序包的名称是,我看到它与命令。 然后,我在命令行中尝试: 它返回: 但输出为: 为什么我不能得到APK,但答案说它的工作?

  • Windows11的 设置->应用->安装的应用 中显示的信息怎么用命令获取

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

  • 场景是我们编写了一个控制台应用程序,我们希望在Inno设置期间调用该应用程序并读取其输出。与此问题相反,当其他程序仍在运行时,必须从Inno设置读取此输出。输出将包含runnig应用程序的进度信息(double或int值),我们希望用ProgressGauge在Inno中显示这些信息。该应用程序是一个用C#编写的简单可执行程序,可以运行几秒钟到几分钟。 这可能吗?如果可能,是否可以在不冻结Inno