Как удалить службу Windows через CMD или PowerShell: пошаговое руководство

После удаления некоторых программ или инструментов в Windows могут оставаться неиспользуемые службы. В этой статье подробно рассказывается, как правильно удалить службу в Windows с помощью встроенных инструментов CMD или PowerShell.

Графическая оснастка управления службами (Services) (services.msc) в Windows предоставляет только базовые функции для запуска, паузы или остановки службы. С помощью этого консольного окна службу удалить нельзя.

Например, у нас стоит задача удалить неиспользуемую службу Stunnel TLS wrapper (в моём случае она использовалась для шифрования трафика приложений с помощью Stunnel). Сначала нужно узнать точное имя службы. В данном примере оно — stunnel (копируйте имя из поля Service name).

how to delete unused windows service

Настоятельно рекомендую с особой осторожностью подходить к удалению служб и тщательно понимать возможные последствия таких действий. Чтобы не нарушить работу системы, лучше сначала отключить автоматический запуск службы и некоторое время понаблюдать за системой перед её удалением. Для отключения автозапуска воспользуйтесь следующей командой в PowerShell:

Set-Service stunnel –startuptype disabled –passthru
Stop-Service stunnel

disable and stop service using powershell

Кроме того, перед удалением службы рекомендуется проверить параметр DependentServices, чтобы узнать, какие другие службы зависят от неё:

Get-Service stunnel -DependentServices

Чтобы удалить службу, сначала её нужно остановить. Для этого в консоли Services нажмите кнопку Stop или используйте команду:

net stop stunnel

net stop service - cmd

Настройки служб хранятся в реестре по пути HKLM\SYSTEM\CurrentControlSet\Services.

Перед удалением службы целесообразно сохранить её настройки, экспортировав их в REG-файл с помощью команды:

reg export "HKLM\SYSTEM\CurrentControlSet\Services\stunnel" "%HOMEPATH%\Documents\stunnel_backup.reg" /y

service registry key

Теперь можно удалить службу по её имени с помощью встроенной команды sc.exe (если имя службы содержит пробелы, заключите его в кавычки):

sc delete stunnel

Должно появиться сообщение:

[SC] DeleteService SUCCESS

sc delete - [SC] DeleteService SUCCESS

Инструмент sc.exe позволяет управлять службами и на удалённых компьютерах. Чтобы остановить и удалить службу на удалённом компьютере M-FS01, выполните:

sc.exe \\m-fs01 stop ServiceName1
sc.exe \\m-fs01 delete ServiceName1

Также можно удалить службу с помощью PowerShell:

Remove-Service stunnel

remove-service powershelle

Командлет Remove-Service доступен в PowerShell Core версии 6.x и новее.

В Windows PowerShell 5.1, в котором отсутствует команда Remove-Service, для удаления службы можно использовать WMI:

$service = Get-WmiObject -Class Win32_Service -Filter "Name='stunnel'"
$service.delete()

Ещё один способ — удалить ключ службы из реестра по пути HKLM\SYSTEM\CurrentControlSet\Services. Чтобы не ошибиться, найдите нужную службу по списку, проверьте параметры DisplayName и ImagePath, которые должны содержать её имя и полный путь к исполняемому файлу. После этого удалите весь ключ службы.

delete service key from the registry

Нажмите 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

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *