Визуальная автоматическая задержка запуска для сервисов в Stack Overflow

Я пытаюсь создать службу, которая запускает исполняемый файл, .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
);

1

Решение

функция 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.
Кроме того, это только описание погружения, а не задержка запуска службы

3

Другие решения

Вы должны использовать MsiServiceConfig Table доступно в установщике Windows 5.0 и более поздних версиях.

Это означает, что функциональность доступна только в Windows 7/8 и Server 2008R2 / 2012. Это соответствует вашей истории? Если так, продолжайте читать. В противном случае альтернативой может быть создание значения реестра в вашем MSI (DelayedAutoStart DWORD = 1).

Вы не упоминаете, какой инструмент авторинга вы используете для создания MSI. Если инструмент не предоставляет эту базовую функциональность, вам следует переключить инструменты на те, которые это делают. Пользовательские действия — плохая замена стандартным действиям.

0

По вопросам рекламы [email protected]