我使用包含以下指令的批处理文件为我的应用程序创建了一个Windows服务:
sc create <name> binPath= "C:\my\path\" DisplayName= "MyName"
该服务已成功创建,应用程序可以正常运行。 Windows服务管理器在列表中显示该服务,但它没有&#34;已启动&#34;状态,即使它正在运行。点击&#34;开始服务&#34;错误与&#34; 错误1053:服务没有及时响应启动或控制请求&#34;。
尝试使用net
命令控制服务时,例如
net stop <name>
或
net start <name>
这些命令失败并出现类似的错误消息。
这在我测试的所有Windows上都是一致的(直到Windows 7)。重启机器不会改变任何东西。
成功创建和运行服务无法启动或停止(甚至可以识别其状态)的任何原因?
答案 0 :(得分:2)
(包括评论中的信息。)
Linux守护程序进程通过信号控制。
Windows服务有一个完整的模型。该过程需要在启动时连接到服务控制管理器(SCM:services.exe
进程)以提供回调。此回调是服务的主要条目,也是SCM如何发出重要事件的信号(例如,服务应该停止)。
这涵盖在MSDN上,.NET具有特定的支持(通过子类化ServiceBase
。)
也许有可能找到一个提供SCM集成的助手程序并启动你的程序,但很可能它会在SCM发送停止时终止你的进程(Windows上不存在* nix样式信号)。