Этот ответ относится к случаю, когда у вас есть несколько зависимостей от службы и вы хотите удалить только одну из них. Например, вы перемещаете базу данных на другой сервер и хотите удалить зависимость SQL Server (как в первоначальном вопросе), но также сохранили другие зависимости для этой службы.
Как отмечалось в другом ответе, sc config - это путь, но синтаксис не очевиден из этой ссылки, если вы никогда не делали этого раньше.
Параметр depend=
принимает список имен служб, разделенных прямой косой чертой, т.е. /
. Чтобы удалить одну зависимость, вы просто передаете ей список текущих зависимостей минус тот, который вы хотите удалить.
Чтобы точно определить текущие зависимости, используйте sc qc , чтобы запросить информацию о конфигурации для службы. Например, для службы с именем vpxd:
C:\Users\me>sc qc vpxd
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: vpxd
[...]
DEPENDENCIES : ProtectedStorage
: lanmanworkstation
: MSSQL$SQLEXPRESS
Нас интересует только атрибут DEPENDENCIES
, в котором перечислены три зависимых сервиса. Обратите внимание, что эти значения являются службой Name
, а не более дружественной DisplayName
, которую вы видите в оснастке Windows Services.
Служба должна быть остановлена, чтобы изменить ее. Таким образом, команды для удаления зависимости SQLExpress из службы vpxd будут:
# stop the service
C:\Users\me>sc stop vpxd
# configure its dependencies; the space after depend= is important.
C:\Users\me>sc config vpxd depend= ProtectedStorage/lanmanworkstation
[SC] ChangeServiceConfig SUCCESS
# start the service back up
C:\Users\me>sc start vpxd
Другим способом устранения зависимости является удаление ее службы, но в этом примере это имело бы смысл только в том случае, если мы хотим полностью избавиться от SQLExpress.
Кроме того: если, как и я, вы склонны работать с оболочкой PowerShell, обратите внимание, что sc
является общим псевдонимом для командлета Set-Content
. Как следствие, все эти примеры были выполнены в старой доброй оболочке Cmd.