Это также можно сделать с помощью командной строки с повышенными привилегиями, используя sc
команду. Синтаксис:
sc config [service name] depend= <Dependencies(separated by / (forward slash))>
Примечание : после знака равенства есть пробел , а перед ним нет ни одного.
Предупреждение : depend=
параметр перезапишет существующий список зависимостей, а не добавит. Так, например, если ServiceA уже зависит от ServiceB и ServiceC, при запуске depend= ServiceD
ServiceA теперь будет зависеть только от ServiceD. (Спасибо, Мэтт !)
Примеры
Зависимость от еще одного сервиса:
sc config ServiceA depend= ServiceB
Выше означает, что ServiceA не запустится, пока не запустится ServiceB. Если вы остановите ServiceB, ServiceA остановится автоматически.
Зависимость от нескольких других сервисов:
sc config ServiceA depend= ServiceB/ServiceC/ServiceD/"Service Name With Spaces"
Выше означает, что ServiceA не запустится, пока не начнутся все ServiceB, ServiceC и ServiceD. Если вы остановите какой-либо из ServiceB, ServiceC или ServiceD, ServiceA остановится автоматически.
Чтобы удалить все зависимости:
sc config ServiceA depend= /
Чтобы отобразить текущие зависимости:
sc qc ServiceA
sc qc [service name]
командыsc.exe
противном случае вы получите ошибку: «Невозможно найти позиционный параметр, который принимает аргумент»Вы можете добавить зависимости службы, добавив значение «DependOnService» к службе в реестре с помощью
regedit
команды, в которой можно найти службыHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<Service name>
. Подробности можно найти в статье MS KB 193888 , откуда взята выдержка из следующего:источник
Я искал чисто PowerShell (без regedit или sc.exe) метод, который может работать на 2008R2 / Win7 и новее, и придумал это:
Легко сделать regedit с PowerShell:
Или, используя WMI:
Метод Change класса Win32_Service помог указать на решение:
источник
Я написал простое приложение .net для управления служебными зависимостями, если вам интересно. Это бесплатно.
http://webpages.charter.net/bushman4/servicedependencymanager.html
источник
В C ++ (ATL) я так и сделал
источник