Запустите службу Windows с Java - PullRequest
0 голосов
/ 24 августа 2018

Мне нужно запустить службу Windows с моим параметром (токеном). Я знаю, как запустить сервис:

String[] command = {"cmd.exe", "/c", "net", "start", "service name"};
new ProcessBuilder(command).start();

Но не знаете, как запустить его с моими параметрами?

1 Ответ

0 голосов
/ 24 августа 2018

Простая утилита на основе Java для запуска или остановки службы может выглядеть примерно так:

public static boolean stopService(final String serviceName) {
    return execCommand("cmd.exe", "/c", "net", "stop", "\"" + serviceName + "\"");
}

public static boolean startService(final String serviceName) {
    return execCommand("cmd.exe", "/c", "net", "start", "\"" + serviceName + "\"");
}

private static boolean execCommand(final String... args) {
    try {
        Process process = new ProcessBuilder(args)
        .redirectErrorStream(true)
        .start();

        try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
            String output = reader.lines().collect(Collectors.joining("\n"));
            System.out.println("Command output:: " + output);
        }

    process.waitFor();
    return process.exitValue() == 0;
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
    return false;
}

Обратите внимание, что метод execCommand может использоваться для запуска практически любой команды. Кроме того, если в этом нет особой необходимости, я бы рекомендовал использовать sc для управления службами вместо net.

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

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