запустить службу Windows из Java - PullRequest
22 голосов
/ 31 января 2012

Как мы можем запустить / остановить службу Windows из Java?Например, я хотел бы запустить и остановить службу Windows MySQL из Java.

Если запуск / остановка возможна, то можно ли узнать, успешно ли запущена служба или нет?

Ответы [ 5 ]

23 голосов
/ 31 января 2012

Вы можете сформулировать сценарий командной строки для запуска, остановки и проверки состояния службы с помощью массива строк:

// start service
String[] script = {"cmd.exe", "/c", "sc", "start", SERVICE_NAME};

// stop service
String[] script = {"cmd.exe", "/c", "sc", "stop", SERVICE_NAME};

// check whether service is running or not
String[] script = {"cmd.exe", "/c", "sc", "query", APP_SERVICE_NAME, "|", "find", "/C", "\"RUNNING\""};

Выполнение сценариев с использованием следующего:

Process process = Runtime.getRuntime().exec(script);
4 голосов
/ 17 марта 2015
import java.io.*;
import java.util.*;

public class ServiceStartStop {
    public static void main(String args[]) {
        String[] command = {"cmd.exe", "/c", "net", "start", "Mobility Client"};
        try {
            Process process = new ProcessBuilder(command).start();
            InputStream inputStream = process.getInputStream(); 
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
            }
        } catch(Exception ex) {
            System.out.println("Exception : "+ex);
        }
    }
}

Работало нормально .... вместо "sc" используйте команду "net".

2 голосов
/ 31 января 2012

Вы можете выполнять системные команды из java, используя команду exec (). Простой учебник по этой теме можно найти здесь - http://www.java -samples.com / showtutorial.php? Tutorialid = 8

Теперь вы можете использовать системные команды для запуска / остановки служб Windows - образец того же самого можно найти здесь

http://www.windowsitpro.com/article/registry2/how-can-i-stop-and-start-services-from-the-command-line-

Я не очень уверен в мониторинге статуса, поэтому не могу оказать большую помощь в этом отношении

0 голосов
/ 31 января 2012

Вы пробовали JNA ?Для этого есть хороший API.

JNA очень активен в SO - вы можете вернуться сюда с конкретными вопросами.

0 голосов
/ 31 января 2012

Вы можете выполнить следующие команды с помощью метода Runtime # exec.

net start и net stop (полная информация доступна по адресу: http://technet.microsoft.com/en-us/library/cc736564%28WS.10%29.aspx)

Возможно, вам придется использовать cmd / c net start, так как он будет выполнять команду под оболочкой.

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