【发布时间】:2015-10-21 18:48:19
【问题描述】:
我创建了一个程序,它应该作为 Windows 服务运行,在启动时自动启动。
我还创建了一个启动器,它应该创建一个服务然后停止。
Starter 以管理员身份运行。
我从一开始就调用这个系统命令:
system("sc create MyApp binpath= /*full path*/ type= own start= auto DisplayName= MyService");
system("sc start MyApp");
然后 Windows 说服务创建成功。
但是,应该作为服务运行的程序却无法启动!
执行“sc start”命令后,控制台暂时无任何显示,任务管理器显示“正在启动”,稍后控制台显示
"Error 1053: The service did not respond to the start or control request in a timely fashion".
我尝试运行这样的命令,显示在 StackOverflow 上的另一篇文章中:
sc create SERVICENAME binPath= "**cmd /c** c:\programlocation\program.exe"
但是,它说:
StartService Failed 2: The system cannot find the file specified.
所以**cmd /c** 东西不起作用。
如何让它工作,请只使用 Windows 原生工具,不要使用外部程序。
【问题讨论】:
-
cmd /c是完全错误的顺便说一句。您需要查看事件查看器/向服务添加一些诊断日志以查看它有什么问题 -
那么这是一个实际编写为 Windows 服务的程序,还是只是一个普通的 ole' .EXE,您希望它作为 Windows 服务运行?无论如何,您的问题似乎很可能出在程序的实际代码中,而您却没有表现出来。
-
尝试 not 将
cmd /c部分包含在** **之间... -
你在哪里找到
binPath=cmd /c?因为在没有任何情况下这是有意义的,如果有一个 SO 答案说它确实需要被删除,或者至少被否决而被遗忘。 :-)