Я хочу добавить зависимость к моей службе, чтобы она запускалась только после запуска большинства служб Windows. Может кто-нибудь порекомендовать такой сервис, который вряд ли был отключен по соображениям безопасности на корпоративных сайтах. Поскольку моему сервису нужны сетевые сервисы, я хочу убедиться, что мой сервис запускается после них. Эта служба также может быть развернута в не корпоративной среде, поэтому я ищу подходящую службу, которая вряд ли была бы отключена конечным пользователем.
3 ответа
Используйте планировщик задач Windows, чтобы запустить приложение. Не добавляйте зависимость к нему. Это имело бы смысл, если бы приложение действительно имело такую зависимость. Но поскольку это не формальная зависимость, это не правильно.
Кроме того, вы не можете гарантировать порядок выполнения услуг Windows. Только те, у кого есть правила зависимости, гарантированно работают в определенном порядке. Все остальные нет. Это означает, что в течение нескольких перезагрузок последние выполняемые службы Windows могут отличаться.
Вместо этого, в планировщике задач вы можете настроить выполнение задачи только в том случае, если пользователь вошел в систему, запустить его только один раз и создать триггер, чтобы задержать выполнение задачи на несколько секунд.
Достаточно 10 или 20 секунд, чтобы гарантировать, что задание будет выполнено последним или близким к последнему, если оно будет выполнено только после входа пользователя в систему.
Однако вы можете искать в журналах Просмотр событий как основу для правила планировщика задач. Msgstr "Запустить только после этого события".
Вы говорите, что вашему сервису "нужны сетевые сервисы и он работает". Но так ли это на самом деле? Нужно ли просто запускать различные службы, связанные с IP, даже если у них нет ссылки или действительного IP-адреса?
Или ваша служба действительно ожидает мгновенного подключения к внешней службе сразу после запуска? И если так, что произойдет, если этот внешний сервис не работает? Что произойдет, если где-то на маршруте возникнут проблемы с сетевым подключением? Это сдается и падает или останавливается?
По моему опыту, большую часть времени, когда люди пишут сервисы и пытаются сделать их зависимыми от других встроенных сервисов, они действительно пытаются избежать написания надлежащего кода обработки ошибок. Я не знаю, что на самом деле делает ваша служба, поэтому я не могу дать совет о том, как справиться с множеством способов, которыми сетевое подключение не будет работать, даже если локальные службы работают и работают. Но вы должны подумать, почему вашему сервису нужна такая зависимость. Разве нет лучшего способа написать это, чтобы вы могли изящно справиться с условием, когда сеть недоступна?
Я бы предложил службу Windows Update. Это очень маловероятно, чтобы быть отключенным.
В Vista и Windows 7 он даже определен как «Автоматический (отложенный запуск)», поэтому он будет запускаться после всех других служб.