我有一个可执行文件,我想将其设置为作为服务运行。使用windows提供的sc.exe工具(请参阅此处的知识库文章:http://support.microsoft.com/kb/251192),我成功“注册”了该服务。但是,当我转到服务管理控制台(Start-> Run-> services.msc)并启动该服务时,我收到以下错误:
错误1053:服务未及时响应启动或控制请求。
在阅读我的初步印象之后,服务可执行文件必须符合API,并且服务必须响应的所需函数/方法中的一个是启动/停止/重启命令。但是,这似乎打败了sc.exe工具的全部内容,该工具通过广告可以将任何可执行文件转换为服务。
任何人都可以为我阐明这一点吗?
答案 0 :(得分:3)
这是您要查找的代码:
sc create SERVICENAME binPath= "cmd /c c:\programlocation\program.exe"
它不会消除您的错误1053,但至少这将适用于已经完成在后台运行应用程序的工作的控制台(CMD)(检查任务管理器确认)。
答案 1 :(得分:1)
查看Topshelf-project,它将许多任意可执行文件转换为服务。
当您引用Topshelf时,您可以从命令行运行您的exe,或者使用以下命令将其安装到Windows服务中:
your.exe install
即使注册了topshelf,您仍然希望拥有一个日志工具 - 例如log4net - 来监控可能阻止其及时启动的自举活动。
答案 2 :(得分:-1)
此行为的一个非常可能的原因是启动的应用程序正在显示与最终用户交互的请求(消息框,输入提示,许可对话框等)。我们不止一次遇到过这种情况。这通常发生在不是作为服务运行的应用程序中。您可以尝试将服务作为本地系统运行,然后选中Allow service to interact with desktop
复选框。
另一种可能性是用户将服务配置为运行,因为无权访问资源(磁盘,数据库等)。如果该过程以交互方式正常工作,请尝试将服务的用户凭据更改为您的用户,并查看是否可以让您更进一步。
<强>更新强>
道歉,我认为问题是关于srvany这是您正在寻找的应用程序。