重新启动系统后,我的dll服务消失了

时间:2018-11-19 12:28:41

标签: c++ winapi windows-services

我用 API 函数用c ++编写了一个dll服务,并且工作正常。我将ServiceMain()函数实现为dllexport,其中调用RegisterServiceCtrlHandlerW()函数来处理服务的传入信号(例如,停止,暂停...)。

一切正常,我定义了运行服务所需的所有必要功能:

    定义
  • ServiceMain(),并在其中进行RegisterServiceCtrlHandlerW()调用以注册控制处理程序。
  • 将服务状态设置为SERVICE_START_PENDING,然后将其设置为SERVICE_RUNNING,以运行服务。
  • 我实施了thread来将东西作为服务工作并正常工作。
  • 然后我可以开始停止我的服务。

我的服务是dll而不是exe,所以我使用svchost.exe来托管它,我按照以下步骤在Windows注册表中进行了注册:

1。我作为一个整体在注册表中创建一个新值,以将我的服务介绍给svchost.exe,如下所示:

enter image description here

2。我创建Parameters子项,并使用以下dll(服务文件)填充值:

enter image description here

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>

0 个答案:

没有答案