起動時にWindows上でJavaアプリケーションを自動的に実行したいが、特殊なWindowsや特別なJREバージョンに依存しない。Windows起動時にシステムに依存しないJavaアプリケーションを起動する方法
一般的に、Windowsログイン時にプログラムを実行するための良い方法は
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
下のレジストリエントリを追加することです。しかし、Windowsが記載されたプログラムを実行しようとすると、システムのPATHが評価されていないかのように思えますレジストリのRUNセクションに追加します。
したがって、これらの両方のエントリが作業を実行します。
"C:\Program Files\Java\jdk1.8.0_111\bin\javaw" -jar c:\path\to\java.jar
"C:\ProgramData\Oracle\java\javapath\javaw" -jar c:\path\to\java.jar
をしかし、この1つはアップしません:
今javaw -jar c:\path\to\java.jar
、そこに必要なので、手動でコンソールウィンドウに入力された後者の作品PATHが存在し、評価されています:
PATH=....;C:\ProgramData\Oracle\Java\javapath;....
ここで、レジストリエントリを追加します自動化されたインストーラプログラムから、私はそれを "Windowsシステムに依存しない"(VistaからWin 10、さらにはインストールされたJREのバージョンに依存しない)形成したいと考えています。だから私はJREへの一般的なパスを知らないので、レジストリに特定のRUNコマンドを追加することはできません。
レジストリのRUNセクションにシステムに依存しないJRE呼び出しを追加する方法を知っている人はいますか?
私は既に、コマンドファイルで試してみました。 "startup.cmd"という内容のコンテンツがjava -jar file.jar
であり、このファイルの呼び出しがレジストリに追加されています。それはうまくいきました。javaが見つかりました。アプリケーションが起動しましたが、このメソッドを使用すると、すべての時間は、Javaアプリケーションが実行されている間。
java -jar file.jar
から
start java -jar file.jar
へ
ありがとう、 とんぼ
解説:「バッチファイルを呼び出すとPATHが解決されますが、最後の文でjavaw.exeをレジストリ実行コマンドで呼び出すと解決されません」と言いますか? – Heri
はい。明らかに、レジストリから直接prgが呼び出されたときに利用可能なPATH情報はありませんが、バッチまたはcmdファイルの迂回経路を経由して呼び出されると、PATHはバッチまたはcmdファイル内にローカルに存在します。 –