我在Visual C ++中创建了一个服务。使用instsrv.exe
和srvany.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");
我的代码是否正确?或者有没有其他方法来编码它以确保服务可以处于运行状态?
答案 0 :(得分:1)
假设您启动的exe实际上是您的服务,这是错误的方法。
Windows服务控制管理器(SCM)实际上通过定义的入口点调用服务的EXE - 您需要提供逻辑以在这些入口点执行特定服务所需的操作,包括通知SCM服务中的状态更改(停止 - >运行,运行 - >停止,等等)。
在MSDN上阅读背景信息,从here开始,以澄清您必须提供的内容。请注意OnStart
特定于在托管代码中实现服务,您不会在Visual C ++中以这种方式执行。也许C#会更容易?