我尝试使用以下方法检查Windows上是否安装了服务:
Process p = Runtime.getRuntime().exec(
"sc query type= service state= all | find\"postgresql\"");
但是输出就像我自己执行了sc
命令一样(帮助信息)。通过cmd
执行相同的字符串时,它可以正常工作。
答案 0 :(得分:1)
试试这样:
String[] cmd = new String[4];
cmd[0] = "sc";
cmd[1] = "query";
cmd[2] ="type=service";
cmd[3] = "state= all | find\"postgresql\"";
Process p = Runtime.getRuntime().exec(cmd);
答案 1 :(得分:0)
我有同样的问题并尝试使用数组的解决方案,但它对我不起作用。
所以我使用下面的命令。在我的情况下,我必须在返回中搜索服务,因为我没有确切的服务名称。在您的情况下,您可以将进程名称或服务器名称放在WHERE子句中:
Process process = Runtime.getRuntime().exec("wmic SERVICE WHERE State=\"Running\" get Name,PathName /format:LIST");
重要提示:wmic仅存在于Windows XP Professional或更高版本中!