从java启动Windows服务

我们如何从Java启动/停止Windows服务? 例如,我想从Java启动和停止mysql Windows服务。

如果可以启动/停止,那么是否可以知道服务是否成功启动?

您可以使用字符串数组来制定命令提示符脚本以启动,停止和检查服务的状态:

 // start service String[] script = {"cmd.exe", "/c", "sc", "start", SERVICE_NAME}; // stop service String[] script = {"cmd.exe", "/c", "sc", "stop", SERVICE_NAME}; // check whether service is running or not String[] script = {"cmd.exe", "/c", "sc", "query", APP_SERVICE_NAME, "|", "find", "/C", "\"RUNNING\""}; 

使用以下命令执行脚本:

 Process process = Runtime.getRuntime().exec(script); 
 import java.io.*; import java.util.*; public class ServiceStartStop { public static void main(String args[]) { String[] command = {"cmd.exe", "/c", "net", "start", "Mobility Client"}; try { Process process = new ProcessBuilder(command).start(); InputStream inputStream = process.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String line; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } } catch(Exception ex) { System.out.println("Exception : "+ex); } } } 

它工作得很好….而不是“sc”使用“net”命令。

您可以使用exec()命令从java执行系统命令 – 可以在此处找到相同的简单教程 – http://www.java-samples.com/showtutorial.php?tutorialid=8

现在您可以使用系统命令来启动/停止Windows服务 – 可以在此处找到相同的示例

http://www.windowsitpro.com/article/registry2/how-can-i-stop-and-start-services-from-the-command-line-

我不太确定监控状态,所以在这方面没有多大帮助

您可以通过Runtime #exec方法执行以下命令。

净启动和净停止(完整信息请访问: http : //technet.microsoft.com/en-us/library/cc736564%28WS.10%29.aspx )

可能你必须使用cmd / c net start,因为它会在shell下执行命令。

你试过JNA吗? 它有一些很好的api来做到这一点。

JNA在SO方面非常活跃 – 您可以带着具体问题回到这里 。