2009-08-27 10 views
15

私は答えを見つけようとしましたが、ブラウザからJavaを検出する方法や、単にJavaを起動するという非常に一般的な方法をヒントとして、実行しているかどうかを確認しました。 (私のマシン上で非常に最初の時間を開始〜2秒)Windows上にインストールされたSun/Oracle JREを検出するにはどうすればよいですか?

次の制限が適用された場合、私は、より高速な方法があります願っています:

  • のみ日/のOracleのJREまたはJDKを
  • のみ1.6そして、高い
  • Windowsプラットフォームのみ
  • ないブラウザから、しかし、昔ながらのWin32実行ファイルから

この検出は公開アプリケーションではなく、Windowsプラットフォームでの内部使用のみを対象としています。

私が読むことができるレジストリパス、または解析できる設定ファイルはありますか?

+0

JREが* *インストールされていない場合は、遅延を参照しています?それがインストールされている場合は、プログラムを実行し、起動遅延を受け入れるつもりはありませんか? – finnw

+1

すぐには分かりません。アプリケーションには多くの機能があり、起動時にすべての前提条件がチェックされます。ユーザーがJavaを必要とするコードパスに到達することさえできない場合もありますが、依然として遅延が発生しています。 ... –

答えて

19
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment 
+7

または 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ JavaSoft \ Java Runtime Environment' –

+0

@ParchedSquid、OPは"普通の古いWin32実行可能ファイル* "から" Wow6432Node'。 – finnw

+1

私のPCのHKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Javaランタイム環境では、アンインストールされた古いJREを指しています。私にとって正しい登録は、HKEY_LOCAL_MACHINE¥SOFTWARE¥Wow6432Node¥JavaSoft¥Java Runtime Environmentの下にあります。 – jornhd

4

レジストリは、インストーラが実行されていると仮定すると、おそらく最も簡単なルートになります。ユーザーが手動で自分の環境を設定している場合、あなたはJAVA_HOME/PATH変数を歩くと、ファイルのバージョンを確認するチェックすることができ

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit 
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment 

:インストール済みのバージョンは、下の様々なサブキーで見つけることができます。デモWSHスクリプト:

'file: whereJava.vbs 
'usage: cscript /Nologo whereJava.vbs 

'find Java 6 from registry 
Set objShell = CreateObject("WScript.Shell") 
Wscript.Echo objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\" &_ 
        "JavaSoft\Java Runtime Environment\1.6\JavaHome") 

'check file version of java.exe 
javaHome = objShell.Environment.item("JAVA_HOME") 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Wscript.Echo objFSO.GetFileVersion(javaHome & "\bin\java.exe") 

GetFileVersionInfoと会社を参照してください。メジャーバージョン番号はJavaバージョンと一致するようです(5,6)。 JVMを起動しなくてもできる有限の量があります。

1

代わりに、コマンドプロンプトで "java -version"コマンドを実行してみてください。

JREが正しくインストールされておらず、他のマシンからコピーされている場合、実際にはうまくいきません。 確実な回避策は、JREインストールディレクトリ "C:¥Program Files¥Java¥"に移動し、コマンドプロンプトからbinフォルダに移動し、 "java -version"を実行します。 出力は、インストールバージョンと探しているすべての関連情報になります。

+0

これは私が避けたいものです。 –

1

WindowsマシンにインストールされているJREとJDKはいくつでもかまいませんが、HKEY_LOCAL_MACHINE¥SOFTWARE¥JavaSoft¥Java Runtime Environmentが1つしかありません。

「JAVA_HOME」および「Path」環境変数は、コマンドラインのJava呼び出しに影響するため、考慮する可能性があります。

5

のWindows>、あなたがインストールしたJREを持っている場合は、パスが表示されている>コマンド>

C:> for %i in (java.exe) do @echo. %~$PATH:i 

例えば を開始します。C:\Windows\System32\java.exe

+0

これは確かに単純な解決策です。 – Machinarius