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

时间:2010-03-13 20:54:18

标签: java windows

如果在Windows系统上安装了某个程序,我该如何检查Java,例如检查Mozilla Firefox?

2 个答案:

答案 0 :(得分:11)

我认为你在谈论Windows。由于Java旨在成为一种独立于平台的语言,并且每个平台的确定方式各不相同,因此没有标准的Java API来检查它。但是,您可以通过JNI调用对爬网Windows注册表的DLL进行调用。然后,您可以检查注册表中是否存在与该软件关联的注册表项。有一个第三方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 /等(换句话说:Java能够运行的任何地方)检测是否FF已安装。否则,您必须将其作为仅限Windows的应用程序分发,并在System#exit()不在Windows时执行System.getProperty("os.name")并发出警告。

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

答案 1 :(得分:0)

我知道没有API可以让你这样做 - 我希望最常用的方法是检查文件位置。

其他方法(如检查Windows注册表)是依赖于操作系统的。