情况是这样的:
我被要求使用 InstallAnywhere 8,这是一种基于 Java 的安装程序 IDE,允许启动和停止 Windows 服务,但没有内置方法来查询它们的状态。幸运的是,它允许您在 Java 中创建可以在安装过程中随时调用的自定义操作(通过我认为是相当复杂的 API)。
我只需要一些东西来告诉我特定服务是启动还是停止。
IDE 还允许调用批处理脚本,所以这也是一个选项,尽管一旦脚本运行,几乎没有办法验证它是否成功,所以我试图避免这种情况。
欢迎任何建议或批评。
最佳答案
这是我必须做的。它很丑,但效果很好。
String STATE_PREFIX = "STATE : ";
String s = runProcess("sc query \""+serviceName+"\"");
// check that the temp string contains the status prefix
int ix = s.indexOf(STATE_PREFIX);
if (ix >= 0) {
// compare status number to one of the states
String stateStr = s.substring(ix+STATE_PREFIX.length(), ix+STATE_PREFIX.length() + 1);
int state = Integer.parseInt(stateStr);
switch(state) {
case (1): // service stopped
break;
case (4): // service started
break;
}
}
runProcess
是一个私有(private)方法,它将给定的字符串作为命令行进程运行并返回结果输出。正如我所说,丑陋,但有效。希望这会有所帮助。
关于java - 需要一种以编程方式检查 Windows 服务状态的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/334471/