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

如何检查Windows系统上是否安装了程序

公西毅
2023-03-14
问题内容

如何在Windows系统上安装程序(例如检查Mozilla Firefox)时如何使用Java进行检查?


问题答案:

我假设您在谈论Windows。由于Java旨在成为一种与平台无关的语言,并且每种平台如何确定它的方式各不相同,因此没有标准的Java API可以对此进行检查。但是,您可以借助对Windows注册表进行爬网的DLL上的JNI调用来完成此操作。然后,您可以只检查注册表中是否存在与该软件关联的注册表项。有一个第三方Java API,可用来爬网Windows注册表:jRegistryKey。

这是在jRegistryKey的帮助下的SSCCE:

package com.stackoverflow.q2439984;

import java.io.File;
import java.util.Iterator;

import ca.beq.util.win32.registry.RegistryKey;
import ca.beq.util.win32.registry.RootKey;

public class Test {

    public static void main(String... args) throws Exception {
        RegistryKey.initialize(Test.class.getResource("jRegistryKey.dll").getFile());
        RegistryKey key = new RegistryKey(RootKey.HKLM, "Software\\Mozilla");
        for (Iterator<RegistryKey> subkeys = key.subkeys(); subkeys.hasNext();) {
            RegistryKey subkey = subkeys.next();
            System.out.println(subkey.getName()); // You need to check here if there's anything which matches "Mozilla FireFox".
        }
    }

}

但是,如果打算使用独立于平台的应用程序,则还必须考虑Linux / UNIX / Mac / Solaris / etc(换句话说:可以运行Java的任何地方)来检测是否安装了FF的方法。 。否则,您将不得不将其作为仅Windows的应用程序进行分发,并System#exit()在System.getProperty(“os.name”)没有Windows的情况下进行警告。

抱歉,我不知道如何在其他平台上检测是否安装了FF,所以不要指望我给出答案;)



 类似资料:
  • 问题内容: 如何检查Mac上是否安装了Java SDK? 为此有命令行吗? 问题答案: 在终端会做

  • 问题内容: 我正在尝试在客户端计算机上安装Java Windows应用程序。我想检查计算机上是否安装了必需的JRE。我想通过Java程序而不是通过cmd命令进行检查 问题答案: 如果您使用的是Windows或Linux操作系统,则在命令提示符/终端中输入 如果正确安装了Java,那么您将得到类似的内容 旁注: 在Windows操作系统上安装Java之后,将PATH变量更改为添加java.exe,因

  • 我正在使用Inno Setup开发安装程序,我需要查找机器中是否安装了Google Chrome。 我找到的答案是,我可以在注册表中的以下路径进行检查, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\Google Chrome 但这并不能解决我的问题。我的注册表中没有此路径。 谁能帮我?

  • 在我们的应用程序中使用PHP检查包(任何版本)是否已安装/存在的最干净的方法是什么? 基本上,在我们的应用程序中,我们希望调用具有以下签名的函数: bool函数hasComposerPackage(字符串$PackageName) 这个函数必须包含什么,这样我们才能做这样的事情: 理想情况下,这需要在没有任何命令行exec调用的情况下发生,并且在这个过程中不应该自动加载任何不必要的文件。

  • 如何检查JavaSDK是否安装在Mac上? 有命令行吗?

  • 我正在检查我的应用程序中是否安装了Google Play,但似乎没有办法。我遵循了这里的帖子,但仍然不起作用,始终返回true即使我使用模拟器进行测试,它已经安装了com.android.vending。那么,我是否检查了错误的包名?有什么想法吗? 提前感谢!