У меня возникли проблемы с выполнением пакетного файла

#java #batch-file #windows-services #tomcat9

Вопрос:

У меня были трудные времена в течение нескольких дней, поэтому я посещаю Переполнение стека.

В настоящее время я использую Tomcat 9 на веб-сервере Java(OpenJDK11). Реализовано для запуска пакетного файла сервера с использованием среды выполнения.

Однако он работает с отладкой eclipse, но не работает при регистрации в службе Windows.

В чем причина? И каково же решение?
Дай мне знать ответ.

Краткие сведения:

 WebServer(Eclipse) -> batch-file1 -> batch-file2 : success

WebServer(windows service) -> batch-file1 -> batch-file2 : Fail
 

Java-код :

 String command = "C:\TOMCAT9\bin\getAuth_restart.bat";
Runtime.getRuntime().exec(command);
 

Мой пакетный файл 1 :
@эхо выключено

 echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/k ""%~dp0restart.bat"" %params%", "", "runas", 1 >> "%temp%getadmin.vbs"

"%temp%getadmin.vbs"
del "%temp%getadmin.vbs"
 

Мой пакетный файл 2 (restart.bat) :

 taskkill /F /FI "services eq MyService" timeout /t 5 >nul
net start MyService
 

Комментарии:

1. Может быть проблема с разрешениями. Проверьте, работает ли ваша служба от имени системы или конкретного пользователя. Используйте ProcessBuilder вместо среды выполнения для записи stdout/err и кода выхода, чтобы получить дополнительную информацию об ошибках.

2. Последние версии Tomcat по умолчанию запускаются как LocalService . Старшие побежали так же SYSTEM .

3. вау… Проблема заключалась в том, что служба была локальной службой! Я изменил службу на LocalSystem, выполнив следующую команду, и она отлично работает. sc config Myservice obj=Локальная система

4. пожалуйста, добавьте это в качестве ответа (и примите его), чтобы удалить этот вопрос из очереди «без ответа».