从Java应用程序中查找Windows服务的状态?

Ind*_*osh 5 java windows-services

如何从java程序检查Windows服务的状态?

小智 9

在下面的示例中,您可以找到如何检查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) { } 



   } 
 } 
Run Code Online (Sandbox Code Playgroud)


Jim*_*son 4

至少您应该能够使用该命令启动 cmd.exe 进程sc query service-name并解析输出以确定状态。不太漂亮,但由于 Windows 服务管理器缺乏 Java API,这将是一个可行的替代方案。

编辑 - 阅读java.lang.ProcessBuilder的 Javadoc ,它将允许您执行外部命令。您可能应该设置redirectErrorStream属性,以便不必处理两个输入流(stdout 和stderr),从而实现更简单的设计。