?

Log in

No account? Create an account

Заметки админа

Суров и справедлив

Previous Entry Share Next Entry
Проблемы с запуском служб Windows 7, очередность запуска и отложенный запуск.
Рыба
hroft_clone3
Частенько возникает задача запустить какую-то программу как службу. Вроде, даже, она и встает как служба, но работать нормально может только, если, запускать ее вручную после запуска всех служб ... Ну не хочется о ней вспоминать, хочется сделать на автомате ...
Ладно. Решим эту проблему, сложно что-ли?

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

Для Bits, например, зависимость запуска служб задается в ключе
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\BITS\DependOnService
тип Reg_Multi_Sz
На каждой строке по имени службы. Для вышеупомянутого Bits значение следующее
RpcSs
EventSystem

Давайте попробуем запустить теоретический сервис ololo после антивируса касперского.
В реестре создаем ключ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\ololo\DependOnService
типа Reg_Multi_Sz
И в качестве значения добавляем строку AVP
Всё. Теперь наш сервис будет запускаться после антивируса касперского. Недостатком является то, что при остановке сервиса касперского, остановится и наш сервис.

Можно сделать и еще парочкой других вариантов.
Например, втавится тип запуска службы "вручную" и в автозагрузку добавляем команду net start ololo
Ветка реестра автостарта
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Для запуска службы создаем строковый параметр.
Значение параметра net start ololo
Имя произвольное, но пусть будет ololo
Можно команду запуска службы поместить в командный файл, а из реестра запускать именно его. Вот и выйдет, что мы можем одной правкой реестра отложить запуск нескольких служб.
Теперь наша служба будет запускаться для любого пользователя, но, только после того, как он зайдет в систему.

ЗЫ.
Посмотреть имя процесса в реестре можно через службы. Открываем нужную нам службу и читаем название в ключа реестра. В приложенном скриншоте имя службы выделено.

Значит, ключ реестра, отвечающий за данную службу
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AVP


Если немного сумбурно - говорите, поправлю попонятнее.