Найти статус службы Windows из приложения Java? - PullRequest
5 голосов
/ 22 марта 2011

Как проверить состояние служб Windows из Java-программы?

Ответы [ 2 ]

9 голосов
/ 05 апреля 2012

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

import java.util.*;
import java.sql.*;
import java.io.*;
import java.text.*;
public class doscmd 
 { 
    public static void main(String args[]) 
      { 
        try 
         { 
           Process p=Runtime.getRuntime().exec("sc query browser"); 

BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream())); 

           String line=reader.readLine();
           while(line!=null) 
            { 
              if(line.trim().startsWith("STATE"))

               {

                if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("1"))
    System.out.println("Stopped");
else
    if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("2"))
        System.out.println("Startting....");
    else
        if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("3"))
            System.out.println("Stopping....");
        else
            if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("4"))
                System.out.println("Running");

  }
   line=reader.readLine(); 
   } 

 } 

 catch(IOException e1) { } 



   } 
 } 
2 голосов
/ 22 марта 2011

По крайней мере, вы должны иметь возможность запустить процесс cmd.exe с командой sc query service-name и проанализировать выходные данные, чтобы определить состояние.Не очень, но без Java API для диспетчера служб Windows, это было бы жизнеспособной альтернативой.

EDIT - прочитайте Javadoc для java.lang.ProcessBuilder , который позволит вам выполнитьвнешняя команда.Вероятно, вам следует установить свойство redirectErrorStream , чтобы вам не приходилось обрабатывать два входных потока (stdout и stderr), что значительно упрощает разработку.

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