Если служба запускается вручную, но не поднимается после перезагрузки, различие почти всегда связано с порядком старта, окружением или учётной записью. Интерактивная сессия администратора скрывает часть этих проблем.
Начните с 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-служба должна запускаться без интерактивной сессии и восстанавливаться после временных ошибок. Я могу проверить установку, права, зависимости и код старта, затем настроить стабильный автозапуск.