Windows版のOracle JDKは、JDKをインストールしたディレクトリをレジストリに登録しています。
JDK 8u92 Windows 64bit版をインストールすると、次のレジストリが登録されます。
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit +-- CurrentVersion : 1.8 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.8 +-- JavaHome : C:\Program Files\Java\jdk1.8.0_92 +-- MicroVersion : 0 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.8.0_92 +-- JavaHome : C:\Program Files\Java\jdk1.8.0_92 +-- MicroVersion : 0
JDK 9 Early Access b125 Windows 64bit版をインストールすると、次のレジストリが登録されました。
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK +-- CurrentVersion : 9 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\9 +-- JavaHome : C:\Program Files\Java\jdk-9 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\9\MSI +-- INSTALLDIR : C:\Program Files\Java\jdk-9 +-- NOSTARTMENU : 0
これまでは、HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit のCurrentVersionを調べてJavaHomeを取り出すことで、そのマシンにインストールされているJDKの最新版のパスを得ることができました。
JDK 9からは、レジストリのキーが変更されるようなので、そのマシンにインストールされているJDKの最新版のパスを取得するには、JDK 9のキーとJDK 8以前のキーと2つを調べる必要があります。
レジストリキーの活用例として、WindowsのコマンドプロンプトでJDKのコマンドを実行するために、PATH等の環境変数を設定するバッチファイルを作成し、その中でレジストリを調べています。Githubのgistにバッチファイルをアップしました(JDK 9対応)。
Setting oracle jdk path using registory for Windows command prompt · GitHub