От какого сервиса мне следует зависеть?

579
quack quixote

Я хочу добавить зависимость к моей службе, чтобы она запускалась только после запуска большинства служб Windows. Может кто-нибудь порекомендовать такой сервис, который вряд ли был отключен по соображениям безопасности на корпоративных сайтах. Поскольку моему сервису нужны сетевые сервисы, я хочу убедиться, что мой сервис запускается после них. Эта служба также может быть развернута в не корпоративной среде, поэтому я ищу подходящую службу, которая вряд ли была бы отключена конечным пользователем.

1

3 ответа на вопрос

2
A Dwarf

Используйте планировщик задач Windows, чтобы запустить приложение. Не добавляйте зависимость к нему. Это имело бы смысл, если бы приложение действительно имело такую ​​зависимость. Но поскольку это не формальная зависимость, это не правильно.

Кроме того, вы не можете гарантировать порядок выполнения услуг Windows . Только те, у кого есть правила зависимости, гарантированно работают в определенном порядке. Все остальные нет. Это означает, что в течение нескольких перезагрузок последние выполняемые службы Windows могут отличаться.

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

Достаточно 10 или 20 секунд, чтобы гарантировать, что задание будет выполнено последним или близким к последнему, если оно будет выполнено только после входа пользователя в систему.


Однако вы можете искать в журналах Просмотр событий как основу для правила планировщика задач. Msgstr "Запустить только после этого события".

Планировщик задач - кусок дерьма. Я бы ни от чего не зависел. Вам гораздо лучше просто поместить его в элементы запуска или какой-нибудь другой хак, чем в зависимости от планировщика задач. Satanicpuppy 14 лет назад 0
1
Ryan Bolger

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

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

По моему опыту, большую часть времени, когда люди пишут сервисы и пытаются сделать их зависимыми от других встроенных сервисов, они действительно пытаются избежать написания надлежащего кода обработки ошибок. Я не знаю, что на самом деле делает ваша служба, поэтому я не могу дать совет о том, как справиться с множеством способов, которыми сетевое подключение не будет работать, даже если локальные службы работают и работают. Но вы должны подумать, почему вашему сервису нужна такая зависимость. Разве нет лучшего способа написать это, чтобы вы могли изящно справиться с условием, когда сеть недоступна?

0
harrymc

Я бы предложил службу Windows Update. Это очень маловероятно, чтобы быть отключенным.

В Vista и Windows 7 он даже определен как «Автоматический (отложенный запуск)», поэтому он запустится после всех других служб.