Если служба запускается вручную, но не поднимается после перезагрузки, различие почти всегда связано с порядком старта, окружением или учётной записью. Интерактивная сессия администратора скрывает часть этих проблем.

Начните с Service Control Manager и журнала приложения в Event Viewer. Зафиксируйте код события, имя учётной записи и время относительно запуска зависимых сервисов.

Что сделать в первую очередь

  • Проверьте Startup type и наличие Delayed Start.
  • Откройте события Service Control Manager после последней загрузки.
  • Запустите исполняемый файл от имени той же сервисной учётной записи.
  • Сверьте пути к конфигурации, логам и рабочему каталогу.

Почему возникает проблема

При загрузке Windows сеть, база, хранилище секретов или диск могут быть ещё недоступны.

  • Служба стартует раньше обязательной зависимости.
  • Учётная запись потеряла право Log on as a service.
  • Приложение использует относительные пути.
  • Старт превышает таймаут Service Control Manager.
  • После обновления изменились права на каталог или сертификат.

Пошаговая диагностика

  • Сопоставьте Event ID с внутренним журналом приложения.
  • Проверьте binPath и аргументы через конфигурацию службы.
  • Проверьте доступ сервисной учётной записи к файлам и сети.
  • Временно включите расширенный лог ранней инициализации.
  • Выполните полную перезагрузку, а не только ручной restart.

Как исправить

Служба должна корректно переживать временную недоступность зависимостей, а не завершаться при первой ошибке.

  • Настройте явные зависимости или Delayed Automatic Start.
  • Замените относительные пути абсолютными и создавайте каталог логов заранее.
  • Добавьте retry с ограниченной задержкой для сети и базы.
  • Проверьте права сервисной учётной записи и доступ к секретам.
  • Своевременно сообщайте системе состояние запуска и понятную ошибку.

Как проверить результат

  • Служба автоматически запускается после холодной перезагрузки.
  • Повторный старт не создаёт второй процесс.
  • Временная недоступность сети обрабатывается без падения.
  • События и журнал содержат понятную причину отказа.

Как не допустить повторения

  • Проверяйте автозапуск после каждого обновления службы.
  • Мониторьте статус и время последнего успешного выполнения.
  • Храните конфигурацию и права в установочном скрипте.
  • Не привязывайте службу к профилю интерактивного пользователя.

Чего не стоит делать

  • Не выдавайте службе права администратора без необходимости.
  • Не скрывайте исключения пустым catch.
  • Не лечите зависимость бесконечной задержкой старта.

Что подготовить для диагностики

  • Имя службы и версия приложения.
  • События SCM и внутренний журнал.
  • Конфигурация зависимостей и учётной записи без пароля.
  • Описание изменений перед появлением ошибки.

Частые вопросы

Поможет ли Automatic Delayed Start?

Он помогает при гонке с сетью и другими службами, но не заменяет обработку ошибок и корректные зависимости.

Почему ручной запуск всегда успешен?

К этому моменту система уже загрузила сеть, профили, диски и зависимые сервисы, которых не было на ранней стадии загрузки.

Когда стоит обратиться за помощью

Если журнал не показывает первопричину или служба зависит от базы и сети, нужна трассировка раннего запуска под реальной сервисной учётной записью.

Итог

Надёжная Windows-служба должна запускаться без интерактивной сессии и восстанавливаться после временных ошибок. Я могу проверить установку, права, зависимости и код старта, затем настроить стабильный автозапуск.