【问题标题】:Windows 7 bat file not starting as a serviceWindows 7 bat 文件未作为服务启动
【发布时间】:2012-02-16 20:44:31
【问题描述】:

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

错误 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] 启动服务失败 5:

访问被拒绝。

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

【问题讨论】:

  • 你不能像那样运行批处理文件,因为 CoreTech 说你需要一个包装器才能正确运行它。

标签: windows-7 windows-services batch-file


【解决方案1】:

您收到第一个错误是因为您的批处理文件无法与 Windows 服务子系统协商/交互。当 Windows 启动服务时,操作系统会等待几秒钟,让服务报告已正确启动。如果此信号从未到达(就像您的批处理文件一样,它对服务一无所知),Windows 将报告错误 #1053。

您将需要一个“包装”应用程序来将您的批处理文件作为服务运行。 free "SRVANY" utility from Microsoft 可能对您有用,但您也应该研究功能更全面的商业替代方案。

【讨论】:

  • 这似乎是问题所在。现在在命令行中使用 srvany 和 instsrv 运行良好,提供 c:\Tools\instsrv.exe myservice c:\Tools\srvany.exe。首先需要将 bat 文件编译成 exe,然后通过 regedit 对服务寄存器(HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > services > myservice)值进行 2 次更改。我添加了名为 Parameters 的新键,其值为字符串值 AppDirectory 和值为 c:\mypath 和 c:\mypath\mybat.exe 的 Application。通过这些更改,它现在可以工作了。非常感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 2014-04-20
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
相关资源
最近更新 更多