2016-10-23 3 views
0

起動時に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 

ありがとう、 とんぼ

+0

解説:「バッチファイルを呼び出すとPATHが解決されますが、最後の文でjavaw.exeをレジストリ実行コマンドで呼び出すと解決されません」と言いますか? – Heri

+0

はい。明らかに、レジストリから直接prgが呼び出されたときに利用可能なPATH情報はありませんが、バッチまたはcmdファイルの迂回経路を経由して呼び出されると、PATHはバッチまたはcmdファイル内にローカルに存在します。 –

答えて

1

あなたのSTARTUP.CMDを変更し、これが新しいプロセスでのjava.exeを起動ANバッチ実行プログラムをできるようになります終了する。

+0

が動作すると、黒いコマンドターミナルウィンドウは少なくとも永続的には動作しませんが、ユーザーを混乱させる可能性のある 'start'コマンドを実行している間にまもなく点滅します。ですから、私は端末ウィンドウのない方法を好むでしょう。 –

+0

'start/b java -jar file.jar'などの'/b'パラメータを試しましたか、代わりに '/ min'を使用しましたか? – AtomicFireball

関連する問題