通过java运行sc create命令时出错

时间:2014-10-13 06:49:35

标签: java windows

我想在windows中注册该服务,并且在注册后也要启动。

在代码::

中使用以下命令
cmd.exe /C sc create "<service name>" binpath="D:\\abc\\xyz.exe -zglaxservice xyz"

我通过runtime.exec()执行上述命令。

运行代码后,它会提供sc命令的帮助。

代码::

Process proc = null;
String[] cmdStr = new String[] { "cmd.exe","/C","sc", "create", "\""+servicename+"\"", "binpath= \"D:\\SCCode\\"+exeName+".exe -zglaxservice "+laxName+"\"" };
proc = Runtime.getRuntime().exec(cmdArr);

请帮忙......

2 个答案:

答案 0 :(得分:0)

命令的两个问题

cmd.exe /C sc create "" binpath="D:\abc\xyz.exe -zglaxservice xyz"
  1. 缺少服务名称
  2. 在=(等于符号)之后,你需要放一个空格。
  3. 所以正确的命令如下:

    cmd.exe /C sc create "ServiceName" binpath= "D:\abc\xyz.exe -zglaxservice xyz"

    我发现你做了一些修改,虽然你的命令行字符串仍然不正确(缺少几个空格)。正确的一个如下:

    String[] cmdStr = new String[] { "cmd.exe ","/C ","sc ", "create ", "\""+servicename+"\"", " binpath= \"D:\\SCCode\\"+exeName+".exe -zglaxservice "+laxName+"\"" };
    

    我在上面尝试了,我的问题是

    '"sc "' is not recognized as an internal or external command
    

    如果你的java没有在管理模式下运行,那么sc命令需要你的cmd命令在管理模式下运行。

    如果您遇到同样的问题,请查看以下链接:

    Run command prompt as Administrator

答案 1 :(得分:0)

此解决方案对我有用:

cmd.exe /C sc create "cdfa$" binpath= "F:\Connect_Direct\Sterling Commerce\FileAgent\cdfa$.exe -zglaxservice cdfa$"