与运行时执行命令(时)EXEC

问题描述:

我尝试检查是否安装了Windows上的服务使用:与运行时执行命令(时)EXEC

Process p = Runtime.getRuntime().exec(
    "sc query type= service state= all | find\"postgresql\""); 

,但输出是完全一样的,如果我本身执行的sc命令(帮助信息)。当通过cmd执行相同的字符串时,它可以正常工作。

尝试这样的:

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); 

我有同样的问题,用数组试图解决方案,但它并没有为我工作。

所以我使用了下面的命令。在我的情况下,我不得不在返回中搜索服务,因为我没有确切的服务名称。你的情况,你可以把进程的名称或服务器名称的WHERE子句中:

Process process = Runtime.getRuntime().exec("wmic SERVICE WHERE State=\"Running\" get Name,PathName /format:LIST"); 

重要提示:WMIC存在只是在Windows XP Professional或更高!