Подтвердить что ты не робот

Запустить службу windows из java

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

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

4b9b3361

Ответ 1

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

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

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

Выполнять скрипты с использованием Runtime.exec(String [] args)

Ответ 2

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".

Ответ 3

Вы можете выполнить системные команды из 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-

Я не очень уверен в контроле над состоянием, поэтому не могу помочь в этом.

Ответ 4

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

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

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

Ответ 5

Вы пробовали JNA? У него есть хороший api, чтобы сделать это.

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