Java: запуск пакетного файла с ProcessBuilder, когда приложение зарегистрировано как служба Windows с помощью Procrun - PullRequest
0 голосов
/ 26 марта 2019

Уже существует 7-летний вопрос с аналогичным названием, но нет принятого ответа, поэтому повторная отправка, поскольку мой вопрос содержит дополнительные сведения.

7-летний вопрос: Запуск пакетного файла с Java, зарегистрированного как WindowsСервис, использующий Procrun

Мой вопрос:

У меня следующий класс Java:

public static void main(String[] args) {
    ProcessBuilder processBuilder = new ProcessBuilder(new String[] {"C:\\Work\\test.bat"});
    processBuilder.redirectErrorStream(true);   
    Process process = processBuilder.start();
    int exitVal = process.waitFor();
}

, когда он запускается непосредственно из затмения,test.bat успешно выполнен.Однако, когда он запускается из службы, test.bat не выполняется.

Я установил jar как службу Windows, используя procrun.Также, чтобы проверить, правильно ли установлена ​​служба.Я сделал это:

public static void main(String[] args)
    {
        try {
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            File file = new File("C:\\Work\\temp.txt");
            FileUtils.writeStringToFile(file, "hello world "+formatter.format(calendar.getTime()), "UTF-8", false);         
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

, и этот блок кода выполняется из службы без каких-либо проблем.Просто test.bat не выполняется.

Разрешено ли ProcessBuilder от procrun?

РЕДАКТИРОВАТЬ

My test.bat:

start "" cmd /c "echo Hello world!&echo(&pause"

1 Ответ

1 голос
/ 26 марта 2019

Вы уверены, что test.bat не выполняется?Пожалуйста, подтвердите в диспетчере задач.Обязательно покажите процессы от всех пользователей, поскольку ваш пакетный файл, вероятно, будет запущен в системной учетной записи.

Обратите внимание, что ваш пакетный файл будет запущен в изолированном сеансе 0 , и вы не будетебыть в состоянии видеть командное окно (и вы не сможете отвечать на команду «пауза»). Вы должны учитывать это ограничение при переходе от теста к чему-то реальному / полезному ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...