如何为Windows服务程序编写OnStart函数?

时间:2011-06-17 09:05:35

标签: winapi visual-c++ windows-services

我在Visual C ++中创建了一个服务。使用instsrv.exesrvany.exe进行安装。 当我检查控制面板中的服务小程序时,服务已注册。但是当我想启动它时,会出现以下消息:

the service on Local Computer started and then stopped. Some service stop automatically if they have no work to do, for example the  Performance logs and Alert Service.

我在OnStart函数中只有这个代码:

(void)system("C:\ReleaseExe\Example1Server.exe");

我的代码是否正确?或者有没有其他方法来编码它以确保服务可以处于运行状态?

1 个答案:

答案 0 :(得分:1)

假设您启动的exe实际上是您的服务,这是错误的方法。

Windows服务控制管理器(SCM)实际上通过定义的入口点调用服务的EXE - 您需要提供逻辑以在这些入口点执行特定服务所需的操作,包括通知SCM服务中的状态更改(停止 - >运行,运行 - >停止,等等)。

在MSDN上阅读背景信息,从here开始,以澄清您必须提供的内容。请注意OnStart特定于在托管代码中实现服务,您不会在Visual C ++中以这种方式执行。也许C#会更容易?