Простая утилита на основе 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
.
Также причиной того, что это не сработало для вас, было то, что вы неправильно указали имя службы.