Я пытаюсь создать службу, которая запускает исполняемый файл, .exe
, Проблема в том, что служба не запускает .exe
Каждый раз, когда я перезагружаюсь. Ему не хватает последовательности. Но когда я вручную устанавливаю тип запуска на Автоматический (отложенный запуск), он работает отлично. Как я могу установить этот тип запуска на автоматический (отложенный запуск) через C ++?
Это код, который я использую для автоматического запуска:
Как я должен изменить это «Service_auto_start» на Автоматический (отложенный запуск)?
SC_HANDLE schService = CreateService
(
schSCManager, /* SCManager database */
pName, /* Name of service */
pName, /* Service name to display */
SERVICE_ALL_ACCESS, /* Desired access */
SERVICE_WIN32_OWN_PROCESS|
SERVICE_INTERACTIVE_PROCESS , /* Service type */
SERVICE_AUTO_START, /* Start type */
SERVICE_ERROR_NORMAL, /* Error control type */
pPath, /* Service's binary */
NULL, /* No load ordering group */
NULL, /* No tag identifier */
NULL, /* No dependencies */
NULL, /* LocalSystem account */
NULL
);
функция ChangeServiceConfig2 может сделать это.
BOOL WINAPI ChangeServiceConfig2(
__in SC_HANDLE hService,
__in DWORD dwInfoLevel,
__in LPVOID lpInfo
);
задавать dwInfoLevel
в SERVICE_CONFIG_DELAYED_AUTO_START_INFO
изменить тип запуска на отложенный автоматический запуск.
Обратите внимание, что это значение не поддерживается в Windows Server 2003 и Windows XP.
Кроме того, это только описание погружения, а не задержка запуска службы
Вы должны использовать MsiServiceConfig Table доступно в установщике Windows 5.0 и более поздних версиях.
Это означает, что функциональность доступна только в Windows 7/8 и Server 2008R2 / 2012. Это соответствует вашей истории? Если так, продолжайте читать. В противном случае альтернативой может быть создание значения реестра в вашем MSI (DelayedAutoStart DWORD = 1).
Вы не упоминаете, какой инструмент авторинга вы используете для создания MSI. Если инструмент не предоставляет эту базовую функциональность, вам следует переключить инструменты на те, которые это делают. Пользовательские действия — плохая замена стандартным действиям.