【问题标题】:Error 1053: The service did not respond to the start or control request in a timely fashion错误 1053:服务没有及时响应启动或控制请求
【发布时间】:2011-12-29 03:11:20
【问题描述】:

我有一个我想设置为作为服务运行的可执行文件。使用 windows 提供的 sc.exe 工具(参见此处的知识库文章:http://support.microsoft.com/kb/251192),我成功“注册”了该服务。但是,当我进入服务管理控制台(开始->运行->services.msc)并启动服务时,出现以下错误:

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

阅读后,我的初步印象是服务可执行文件必须符合 API,并且服务必须响应的必需功能/方法包括启动/停止/重启命令。然而,这似乎违背了 sc.exe 工具的全部意义,该工具被宣传为能够将任何可执行文件转换为服务。

谁能帮我解释一下?

【问题讨论】:

    标签: windows service


    【解决方案1】:

    这是您要查找的代码:

    sc create SERVICENAME binPath= "cmd /c c:\programlocation\program.exe" 
    

    它不会消除错误 1053,但至少这将适用于已经在后台运行应用程序的控制台 (CMD)(检查任务管理器以确认)。

    【讨论】:

    • @davehale23,你为什么将cmd /c 包含在** ** 中?只是为了强调还是代码的一部分(不这么认为......)?
    • 我震惊地发现 sc 没有验证。所以你可以对任何东西进行服务,对微软来说非常糟糕。 sc create crap binpath="pile of crap" [SC] CreateService SUCCESS
    【解决方案2】:

    看看Topshelf-project,它将许多任意可执行文件转换为服务。

    当您引用 Topshelf 时,您可以从命令行运行您的 exe,或者将其安装到 Windows 服务中:

    your.exe install
    

    即使注册了 topshelf,您仍然希望拥有一个日志工具(例如 log4net)来监控可能阻止其及时启动的引导活动。

    【讨论】:

    • 他们的网站信息量不大,但据我所知,Topshelf 似乎是为了更容易在 .NET 中编写服务,而不是将任意可执行文件作为服务运行。如果您(至少)没有相关可执行文件的源代码,我认为 Topshelf 不会有帮助。
    • 我同意 Topshelp 缺乏文档。尽管它的项目生命已经过了初期阶段,但它仍然缺乏教程和健壮的演练。对不起,没有让你更接近。祝你好运!
    【解决方案3】:

    此行为的一个很可能的原因是启动的应用程序正在显示与最终用户交互的请求(消息框、输入提示、许可对话框等)。我们不止一次遇到过这种情况。这通常发生在并非设计为作为服务运行的应用程序中。您可以尝试将服务作为本地系统运行并选中Allow service to interact with desktop 复选框。

    另一种可能性是服务配置为运行的用户无权访问资源(磁盘、数据库等)。如果该过程以交互方式正常工作,请尝试将服务的用户凭据更改为您的用户,看看这是否能让您更进一步。

    更新

    抱歉,我认为问题是关于 srvany,这是您正在寻找的应用程序。

    【讨论】:

    • -1 sc.exe 无法将任意可执行文件转换为服务,因此问题和此答案均基于错误的假设。
    • 抱歉,没有仔细阅读问题;我错误地认为他们正在使用 srvany,因为这就是我一开始阅读问题时突然出现的问题。我已经确定了答案。
    猜你喜欢
    • 2011-03-28
    • 2014-08-05
    • 2011-01-05
    • 2015-12-28
    • 2023-03-23
    • 1970-01-01
    • 2016-03-22
    • 2013-12-20
    相关资源
    最近更新 更多