#java #windows #registry
#java #Windows #реестр
Вопрос:
Я хочу автоматически запускать Java-приложение под Windows во время запуска, но не в зависимости от конкретной Windows или специальной JRE-версии.
Как правило, хорошим способом запуска программ во время входа в Windows было бы добавить запись реестра в
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
Но кажется, что системный ПУТЬ не вычисляется, когда Windows пытается запустить программы, перечисленные в разделе запуска реестра.
Итак, эти обе записи работают:
"C:Program FilesJavajdk1.8.0_111binjavaw" -jar c:pathtojava.jar
"C:ProgramDataOraclejavajavapathjavaw" -jar c:pathtojava.jar
Но это не появляется:
javaw -jar c:pathtojava.jar
Теперь последнее работает при ручном вводе в окне консоли, потому что там требуемый ПУТЬ существует и оценивается:
PATH=....;C:ProgramDataOracleJavajavapath;....
Теперь я хочу добавить запись реестра из программы автоматического установщика, и я хотел бы, чтобы она была сформирована как «независимая от системы Windows» (от Vista до Win 10, и, кроме того, не зависит от версии установленной JRE). Итак, я не знаю общего пути к JRE и поэтому не могу добавить конкретную команду ЗАПУСКА в реестр.
Кто-нибудь знает, как правильно добавить независимые от системы JRE-вызовы в раздел запуска реестра?
Я уже пробовал использовать командный файл, например, «startup.cmd» с содержимым java -jar file.jar
там, добавил вызов этого файла в реестр, и да, это сработало, java была найдена, приложение было запущено, но при использовании этого метода у меня появляется раздражающее черное окно командного терминала, которое остается открытым все время, пока запущено приложение Java.
Спасибо, Томбо
Комментарии:
1. Для пояснения: вы говорите, что «ПУТЬ разрешен, если я вызываю командный файл, но он не разрешен, если я вызываю javaw.exe через команду «Выполнить мой реестр» в вашем последнем предложении?
2. да. очевидно, что информация о ПУТИ недоступна при вызове prg непосредственно из реестра, но при вызове через обход пакета или cmd-файла ПУТЬ существует локально в пакете или cmd-файле.
Ответ №1:
Измените свой startup.cmd с
java -jar file.jar
Для
start java -jar file.jar
Это запустит java.exe в новом процессе позвольте вашему пакетному исполнителю завершить работу.
Комментарии:
1. это работает, тогда черное окно командного терминала, по крайней мере, не остается включенным постоянно, но все еще мигает во время выполнения
start
, что все еще может сбить пользователя с толку. Поэтому я бы предпочел способ, при котором окно терминала вообще не будет видно.2. Вы пробовали использовать
/b
такой параметр, какstart /b java -jar file.jar
или, возможно, использовать/min
вместо этого?