Мой dll сервис исчезает после перезагрузки системы - PullRequest
0 голосов
/ 19 ноября 2018

Я написал dll-сервис на c ++ с API функциями и работает должным образом.Я реализовал функцию 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 в качестве начальной точки.

Пока что мой сервис работает даже при выходе из системы НО когда я перезагружаю свой компьютер, после входа в Windows моя служба исчезла из Диспетчер служб Windows .На самом деле он удаляется из базы данных SCM .

Кстати, я установил свой сервис с помощью 3 методов.И я использую svchost.exe как binarypath для установки службы (потому что svchost.exe ведет себя как хост для моей службы dll).Например, с помощью программы sc.exe я установил binarypath на svchost.exe, чтобы косвенно запускать мой сервис с параметрами -k groupname.

Моя проблема: Когда я перезагружаю систему, после входа в систему моя служба исчезает (удаляется). Пожалуйста, помогите мне решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...