Find status of Windows service from Java application?

前端 未结 3 632
忘了有多久
忘了有多久 2021-01-13 05:59

How to check the status of the windows services from a java program?

相关标签:
3条回答
  • 2021-01-13 06:24

    This method will return true or false depending upon service is running or not.

    public boolean checkIfServiceRunning(String serviceName) {
        Process process;
        try {
             process = Runtime.getRuntime().exec("sc query " + serviceName);
             Scanner reader = new Scanner(process.getInputStream(), "UTF-8");
             while(reader.hasNextLine()) {
                if(reader.nextLine().contains("RUNNING")) {
                   return true;
                }
             }
        } catch (IOException e) {
            e.printStackTrace();
        }            
        return false;
    }
    
    0 讨论(0)
  • 2021-01-13 06:25

    At the very least you should be able to launch a cmd.exe process with the command sc query service-name and parse the output to determine the status. Not pretty, but lacking a Java API to the Windows service manager this would be a viable alternative.

    EDIT - Read the Javadoc for java.lang.ProcessBuilder, which will allow you to execute an external command. You should probably set the redirectErrorStream property so that you don't have to handle two input streams (stdout and stderr), making for a much simpler design.

    0 讨论(0)
  • 2021-01-13 06:26

    on the following example you can find how can you check windws service status and you can parsed to do certain action

    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) { } 
    
    
    
       } 
     } 
    
    0 讨论(0)
提交回复
热议问题