После удаления некоторых программ или инструментов в Windows могут оставаться неиспользуемые службы. В этой статье подробно рассказывается, как правильно удалить службу в Windows с помощью встроенных инструментов CMD или PowerShell.
Графическая оснастка управления службами (Services) (services.msc
) в Windows предоставляет только базовые функции для запуска, паузы или остановки службы. С помощью этого консольного окна службу удалить нельзя.
Например, у нас стоит задача удалить неиспользуемую службу Stunnel TLS wrapper (в моём случае она использовалась для шифрования трафика приложений с помощью Stunnel). Сначала нужно узнать точное имя службы. В данном примере оно — stunnel (копируйте имя из поля Service name).
Set-Service stunnel –startuptype disabled –passthru
Stop-Service stunnel
Кроме того, перед удалением службы рекомендуется проверить параметр DependentServices, чтобы узнать, какие другие службы зависят от неё:
Get-Service stunnel -DependentServices
Чтобы удалить службу, сначала её нужно остановить. Для этого в консоли Services нажмите кнопку Stop или используйте команду:
net stop stunnel
Настройки служб хранятся в реестре по пути HKLM\SYSTEM\CurrentControlSet\Services.
Перед удалением службы целесообразно сохранить её настройки, экспортировав их в REG-файл с помощью команды:
reg export "HKLM\SYSTEM\CurrentControlSet\Services\stunnel" "%HOMEPATH%\Documents\stunnel_backup.reg" /y
Теперь можно удалить службу по её имени с помощью встроенной команды sc.exe
(если имя службы содержит пробелы, заключите его в кавычки):
sc delete stunnel
Должно появиться сообщение:
[SC] DeleteService SUCCESS
sc.exe \\m-fs01 stop ServiceName1
sc.exe \\m-fs01 delete ServiceName1
Также можно удалить службу с помощью PowerShell:
Remove-Service stunnel
В Windows PowerShell 5.1, в котором отсутствует команда Remove-Service, для удаления службы можно использовать WMI:
$service = Get-WmiObject -Class Win32_Service -Filter "Name='stunnel'"
$service.delete()
Ещё один способ — удалить ключ службы из реестра по пути HKLM\SYSTEM\CurrentControlSet\Services. Чтобы не ошибиться, найдите нужную службу по списку, проверьте параметры DisplayName и ImagePath, которые должны содержать её имя и полный путь к исполняемому файлу. После этого удалите весь ключ службы.
F5
для обновления списка служб в консоли Services и убедитесь, что служба удалена и больше не отображается. Обычно рекомендуется перезагрузить компьютер после удаления службы. После перезагрузки можно удалить исполняемые файлы и каталоги, указанные в параметре ImagePath маршрута службы.При попытке удалить некоторые службы через CMD может появиться сообщение о том, что служба «отмечена для удаления». Это значит, что служба запланирована к удалению, но для завершения процесса требуется закрыть связанные дескрипторы или выполнить перезагрузку системы:
DeleteService FAILED 1072: The specified service has been marked for deletion.
Такая служба будет автоматически удалена после перезагрузки компьютера.
Чтобы удалить службу без перезагрузки Windows, используйте команду taskkill
или завершите процесс службы через Task Manager
. После этого удалите ключ службы из реестра с помощью команды PowerShell:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\stunnel | Remove-Item -Force -Verbose