Службы Windows не запускаются автоматически после перезагрузки?

10

У нас есть некоторые службы Windows, написанные на .NET. Они нормально запускаются вручную в службах mmc, но, несмотря на то, что они установлены в автоматический режим, они никогда не запускаются при включении (или перезагрузке) компьютера.

Обновление В журнале событий вместо того, чтобы увидеть «xyz запущен», наряду с другими запущенными службами, я просто вижу «Служба xyz перешла в состояние остановки». и отдельная ошибка, которая говорит: «Тайм-аут (30000 миллисекунд) был достигнут при ожидании ответа транзакции от службы slsvc».

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

Есть идеи? Я попытался установить их на отложенный запуск без видимой разницы.

Джеймс Кроули
источник
Однажды у меня была очень похожая проблема с некоторыми запланированными задачами, которую я обнаружил, что могу воссоздать, изменив имя пользователя, под которым запускалась задача после ее создания. Я обнаружил, что могу легко решить проблему, просто удалив и заново создав задачи. Подобный подход определенно стоит того - попробуйте удалить сервис и воссоздать его. Это может помочь, если вы не уверены, как это сделать. К вашему сведению, проблема с запланированными задачами больше не возникает, думаю, какое-то обновление в какой-то момент исправило ее.
DaveRandom
Мне интересно, если они не запускаются, потому что они зависят от другого сервиса (который еще не запущен). Вы видите ошибку запуска службы в системном журнале?
newmanth
@DaveRandom переустановка на самом деле происходит каждый раз, когда мы внедряем новую версию, поэтому, к сожалению, удаление / добавление решает проблему
Джеймс Кроули,
Вопрос @newmanth обновлен некоторыми новыми подробностями - оказывается, что в журнале событий были пропущенные записи
Джеймс Кроули,
В вашем комментарии к ответу Роба я заметил, что .NET - единственная зависимость. Знаете ли вы, использовали ли разработчики сторонние API в разработке сервиса? Если так, возможно, существует какой-то механизм лицензирования, который блокируется?
Новый

Ответы:

3

Для этого есть исправление. Смотрите: http://support.microsoft.com/kb/922918

Дело в том, что службе может потребоваться ldap или другой удаленный доступ, из-за которого возникают задержки. Особенно это может произойти при запуске сервера. Увеличив задержку, вы можете обеспечить запуск службы.

Конечно, лучше было бы выяснить, почему запуск этой службы занимает так много времени. Является ли ваша среда безразмерной? У вас есть проблемы с производительностью службы, которая опрашивается из-за задержки запуска службы?

Дэвид Био
источник
Как конкретно можно устранить неполадки при запуске службы? Есть ли способ включить подробное ведение журнала?
Кенни Эвитт
1

Что вы имеете в виду, когда говорите «у нас есть несколько служб Windows»? Это значит, что они созданы кем-то внутри вашей организации? Если это так, то вы в лучшем положении для их отладки, чем кто-либо еще здесь - какие зависимости эти сервисы имеют от компонентов Windows, и считаются ли ваши программисты тестирующими на наличие этих сервисов и ожидающими их подключения к сети, когда ваши сервисы запускаются ?

Рассматривали ли вы настройку этих служб как зависимость от службы лицензирования программного обеспечения (вот что такое slsvc )?

с http://support.microsoft.com/kb/193888

Чтобы создать новую зависимость, выберите подраздел, представляющий службу, которую вы хотите отложить, нажмите «Изменить», а затем нажмите «Добавить значение». Создайте новое имя значения «DependOnService» (без кавычек) с типом данных REG_MULTI_SZ и нажмите кнопку ОК. Когда появится диалоговое окно «Данные», введите имя или имена служб, которые вы предпочитаете запускать перед этой службой, с одной записью для каждой строки, а затем нажмите кнопку «ОК».

Имя службы, которую вы вводите в диалоговом окне «Данные», - это точное имя службы, которое отображается в реестре в разделе «Службы».

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

Роб Моир
источник
Спасибо Робу - они внутренние - но единственной зависимостью является .NET Framework, который, я не думаю, работает как сервис. Больше ничего не требуется при запуске ...
Джеймс Кроули
0

Попробуйте с этим:

Выполните следующую команду, чтобы определить событие триггера, соответствующее вашей среде. В этом примере команда определяет, назначен ли IP-адрес хосту, а затем запускает или останавливает службу.

sc triggerinfo w32 время запуска / остановка сети / networkoff

где w32Time - название вашей службы

или попробуйте это

https://support.microsoft.com/en-us/kb/922918

Фернандо Диас Толедано
источник