天天看点

java检测Windows服务(NT服务)是否安装、启动

        之前项目写的Windows服务需要集成到B/S架构系统中去,方便用户的操作。用到的函数是Runtime.getRuntime().exec()。

        实现如下:

Process process = Runtime.getRuntime().exec("sc query AzureStorageService");//查询服务是否安装
InputStream inputStream = process.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"GBK"));//注意中文编码问题
String temp = "",result="";
while ((temp=bufferedReader.readLine())!=null){
	result += temp;
}//result结果中判断服务是否存在
bufferedReader.close();
inputStream.close();
           
Process process = Runtime.getRuntime().exec("tasklist /svc");//列出服务列表判断服务是否启动
String temp = "",result="";
InputStream inputStream = process.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"GBK"));//注意中文编码问题
while ((temp=bufferedReader.readLine())!=null){
	result += temp;
}
bufferedReader.close();
inputStream.close();
           

        直接执行.bat文件

String path = ServletActionContext.getRequest().getSession().getServletContext().getRealPath("/");
String command = path + "startup.bat";
Process process  = Runtime.getRuntime().exec(command,null,new File(path));//到指定目录执行
InputStream inputStream = process.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"GBK"));//注意中文编码问题
String temp = "",result="";
while ((temp=bufferedReader.readLine())!=null){
	result += temp;
}
bufferedReader.close();
inputStream.close();