2012-01-23 52 views
6

我正在运行一个Windows服务,它在启动过程中启动一个简单的bat文件,但服务无法启动。如果我尝试从服务GUI手动运行它,我会收到以下错误消息。Windows 7 bat文件没有作为服务启动

错误1053:该服务没有启动或控制请求及时

这似乎是服务启动过程中一个常见的错误,但我没有发现类似的问题其他答案。我创建命令行服务用以下命令

C:\Users\Administrator>sc create service_name binpath= c:\service.bat start= auto 
[SC] CreateService SUCCESS 

然后我与

C:\Users\Administrator>sc start service_name 

运行它。然而,我得到的错误消息:

[SC] StartService FAILED 5:

访问被拒绝。

如果我从命令提示符以管理员身份运行它,我没有得到拒绝访问的消息,但我得到了1053的错误。我想运行一个bat文件作为Windows服务应该不是那么困难。有任何想法吗?

+0

你不能像这样的服务运行批处理文件,因为CoreTech说你需要一个包装来正确运行它。 –

回答

7

由于批处理文件无法与Windows服务子系统进行协商/交互,因此会出现第一个错误。当Windows启动服务时,操作系统会等待几秒钟,以便服务报告已正确启动。如果这个信号永远不会到达(就像你的批处理文件一样,它不知道关于服务的任何信息),Windows将报告错误#1053。

您将需要一个“包装器”应用程序来将批处理文件作为服务运行。 free "SRVANY" utility from Microsoft可能适合你,但你也应该研究更全功能的商业选择。

+0

'srvany'对这种情况很好用 –

+1

这似乎是问题所在。它现在工作正常与srvany和instsrv在命令行给c:\ Tools \ instsrv.exe myservice c:\ Tools \ srvany.exe。首先需要将bat文件编译为exe,然后通过regedit对服务注册(HKEY_LOCAL_MACHINE> SYSTEM> CurrentControlSet> services> myservice)值进行2次更改。我使用字符串值AppDirectory和Application添加了值为c:\ mypath和c:\ mypath \ mybat.exe的新的名为Parameters的参数。随着这些变化,它现在起作用。非常感谢您的帮助:) – BFinn