Как перезапустить windows-службу из программы на java?

 
 
 
Сообщения:59
Здравствуйте. Появилось необходимость из программы, написанной на джаве, перезапускать службу windows. Пока только удалось частично этого добиться следующим образом.

  • Написал такой бат-ник:
    @echo off
    chcp 1251
    net stop ActiveMQ && net start ActiveMQ

  • Создал ярлык на этот бат-ник, установил у него в свойствах, чтобы он запускался от имени администратора
  • Написал в джаве такой метод:
        public static Process runCommandForFile(String command) throws Exception {
            if (command == null || command.trim().length() < 1) {
                return null;
            }
            command = command.trim();
            File file = new File(command);
            command = file.getAbsolutePath();
            String[] cmd = new String[3];
            String osName = System.getProperty("os.name");
            if (osName.startsWith("Windows 9") || osName.startsWith("Windows ME")) {
                cmd[0] = "command.com";
                cmd[1] = "/C";
                cmd[2] = command;
            } else if (osName.startsWith("Linux") || osName.startsWith("FreeBSD")) {
                cmd[0] = "/bin/sh";
                cmd[1] = "-c";
                cmd[2] = command;
                File shellFile = new File("mpo_shell.sh");
                if (shellFile.exists() && shellFile.canRead()) {
                    cmd[1] = "mpo_shell.sh";
                }
            } else {
    // default + Windows
                cmd[0] = "cmd.exe";
                cmd[1] = "/C";
                cmd[2] = command;
            }
            Process proc = Runtime.getRuntime().exec(cmd);
            return proc;
        }
    


    Вызываю этот метод так:
        public class View extends JFrame {
            private static final int WINDOW_WIDTH = 600, WINDOW_HEIGHT = 500;
            private static final String FILE_BAT = "F:\\TEMP\\activemq-restart.bat.lnk";
        ...
        //в теле слушателя нажатия на кнопку
        Utils.runCommandForFile(FILE_BAT);
        ...
        }



В итоге он у меня всё делает (пока в скрипте прописал только остановку службы), но перед этим запрашивает в отдельном окне имя администратора и его пароль. И пока не знаю, как сделать, чтобы ввод имени пользователя и его пароля происходил в автоматическом режиме. Пытался сделать это сразу в скрипте, но у меня ничего не получалось.
Изменен:26 дек 2017 13:58
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет