我用 API 函数用c ++编写了一个dll服务,并且工作正常。我将ServiceMain()
函数实现为dllexport
,其中调用RegisterServiceCtrlHandlerW()
函数来处理服务的传入信号(例如,停止,暂停...)。
一切正常,我定义了运行服务所需的所有必要功能:
ServiceMain()
,并在其中进行RegisterServiceCtrlHandlerW()
调用以注册控制处理程序。SERVICE_START_PENDING
,然后将其设置为SERVICE_RUNNING
,以运行服务。thread
来将东西作为服务工作并正常工作。我的服务是dll
而不是exe
,所以我使用svchost.exe
来托管它,我按照以下步骤在Windows注册表中进行了注册:
1。我作为一个整体在注册表中创建一个新值,以将我的服务介绍给svchost.exe
,如下所示:
2。我创建Parameters
子项,并使用以下dll(服务文件)填充值:
3。另外,由于将ServiceMain
函数引入到ServiceMain
作为起点,我还定义了一个值(svchost.exe
。
到目前为止,重新启动计算机时,即使在注销用户 BUT 中,我的服务也能正常工作,登录Windows后,我的服务从 Windows服务管理器中消失了< / em>。实际上,它已从 SCM 数据库中删除。
通过我使用3
方法安装服务的方式。我将svchost.exe
用作binarypath
来安装服务(因为svchost.exe
充当dll服务的主机)。例如,使用sc.exe
程序,我将binarypath
设置为svchost.exe
,以-k groupname
作为参数间接运行我的服务。
我的问题是: 重新启动系统后,登录后我的服务消失了(已删除)。请帮助我解决此问题。 < / strong>