如何创建自己的Windows服务

145a 275 信誉分
2025-11-28T13:18:56.9533333+00:00

我有一个已编译好的可执行文件,其会在本地运行一个http服务器。能否将其注册为Windows服务?

我成功使用sc create命令创建了服务,但是当我启动服务时,弹出了下面的对话框:

---------------------------

Services

---------------------------

Windows could not start the Example service on Local Computer.

Error 1053: The service did not respond to the start or control request in a timely fashion.

---------------------------

OK   

---------------------------
Windows 家庭版 | Windows 10 | “应用”
0 个注释 无注释
{count} 票

问题作者接受的答案
  1. davidw 6,475 信誉分
    2025-12-14T09:16:24.6333333+00:00

    这么说吧,控制台程序可以有main()函数,Windows服务程序就不要main(),实现onstart()、onresume()、onstop()等,是等系统回调的。建议你找找服务程序的开发指南,看看Win服务程序如何开发。也欢迎下载、参阅 经验总结 文档( 分_享_网_页 lanzoui.com/b669999 )。

    你认为此答案很有帮助。

问题作者接受的答案
  1. Noel Macadangdang 8,080 信誉分 独立顾问
    2025-11-28T14:09:00.14+00:00

    嗨 145a,

    感谢你提出问题。 我了解到你已经使用 sc create 创建了服务,这非常棒。 不过,启动时出现 Error 1053 确实让人头疼,对吧? 通常,这个错误出现是因为程序并没有真正按照 Windows 服务的方式构建。 Windows 服务需要特定的启动和停止入口,而你的普通程序可能没有这些。 让我们一起来解决这个问题。

    基本上,Windows 需要你的程序告诉它:“我已经启动并运行了! ”如果程序只是直接运行而没有发出这个信号,Windows 就会不耐烦并抛出这个错误。

    要解决这个问题,你有几个选择。 一种简单的方法是使用像 NSSM 这样的工具(它是一个服务管理器),把你的程序包装起来,让它看起来像一个服务。 或者,你可以修改程序,使它像真正的 Windows 服务一样工作,使用 .NET 来实现。 这样,它就能在 Windows 启动和停止时正确响应。

    希望这个答案对你有帮助,如果还有任何问题,请随时回复。

    此致

    圣诞颂歌


1 个其他答案

排序依据: 非常有帮助
  1. davidw 6,475 信誉分
    2025-12-14T05:56:35.7+00:00

    你应该修改这支程序的源代码,专门实现几个服务程序必有的回调函数,以响应系统对服务的启动、停止等常规请求。即响应start or control request。


你的答案

提问者可以将答案标记为“已接受”,版主可以将答案标记为“已推荐”,这有助于用户了解答案是否解决了提问者的问题。