2010-03-13 135 views

回答

11

我假設你正在談論Windows。由於Java被認爲是獨立於平臺的語言,如何確定它的平臺是不同的,所以沒有標準的Java API來檢查它。但是,您可以在爬行Windows註冊表的DLL上調用JNI。然後,您可以檢查註冊表中是否存在與該軟件關聯的註冊表項。您可以使用第三方Java API來抓取Windows註冊表:jRegistryKey

下面是一個SSCCE與jRegistryKey的幫助:

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". 
     } 
    } 

} 

不過,若你打算有一個platformindependent應用程序,那麼你還必須考慮到在Linux/UNIX/MAC/Solaris /其它(換句話說:Java能夠運行的任何地方)檢測FF是否安裝的方法。否則,您必須將其作爲僅限Windows的應用程序進行分發,並在System.getProperty("os.name")不Windows時執行System#exit()以及警告。

對不起,我不知道如何在其他平臺FF是否安裝或無法檢測到,所以不要指望一個答案從我爲何;)

+1

+1引入jRegistryKey,謝謝 – stacker

0

沒有API,我知道這將允許你這樣做 - 我期望最一般的方法是檢查文件的位置。

其他方法(如檢查Windows註冊表)取決於操作系統。

相關問題