如何通過 CMD 或 PowerShell 刪除 Windows 服務

Jacki

卸載某些程序或工具後,Windows 中可能仍然存在未使用的服務。這篇文章解釋了如何正確刪除 Windows 中的服務使用內置的 CMD 或 PowerShell 工具。

服務圖形管理管理單元 (services.msc)在 Windows 中僅提供用於啟動、暫停或停止服務的基本操作按鈕。該控制台不能用於刪除該服務。

例如,任務是刪除未使用的 Stunnel TLS 包裝器服務(在我的例子中,該服務用於使用 Stunnel 加密應用程序流量)。首先,獲取服務名稱。在這種情況下,它是隧道(從服務名稱字段複製名稱)。

我強烈建議您在刪除服務時要小心謹慎徹底了解您的行為的潛在影響。為了避免破壞您的環境,建議禁用該服務並觀察其運行一段時間,然後再將其刪除。您可以使用以下 PowerShell 命令禁用該服務的自動啟動:

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

另外,在刪除服務之前,請檢查 DependentServices 參數以查看哪些其他服務依賴於該服務。

Get-Service stunnel -DependentServices

您必須先停止該服務,然後才能將其刪除。單擊停止服務控制台中的按鈕或運行命令:

net stop stunnel

服務設置存儲在註冊表中的HKLMSYSTEMCurrentControlSet服務鑰匙。

在刪除服務之前,請使用以下命令將服務配置導出到 REG 文件來備份其設置:

reg export "HKLMSYSTEMCurrentControlSetServicesstunnel" "%HOMEPATH%Documentsstunnel_backup.reg" /y

現在您可以使用內置的服務按名稱刪除服務sc.exe命令(如果服務名稱包含空格,請將其用引號引起來):

sc delete stunnel

應出現一條消息:

[SC] DeleteService SUCCESS

sc.exe 工具允許您管理遠程計算機上的服務。要停止並刪除 M-FS01 計算機上的服務,請運行;

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

或者您可以使用 PowerShell 刪除服務:

Remove-Service stunnel

Remove-Service cmdlet 在 PowerShell Core 版本 6.x 及更高版本中可用。

在 Windows PowerShell 5.1 中,它不包含刪除服務命令,您可以使用 WMI 刪除服務:

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

此外,要刪除服務,您可以刪除其註冊表項HKLMSYSTEMCurrentControlSet服務。為確保您定位到正確的刪除服務,請在列表中找到該服務並驗證該服務是否已刪除。顯示名稱圖像路徑參數包含服務的名稱及其可執行文件的完整路徑。刪除整個服務密鑰。

F5刷新服務控制台列表並驗證該服務是否已被刪除並且不再出現。通常建議刪除服務後重新啟動 Windows。重新啟動後,您可以刪除引用的可執行文件和目錄圖像路徑註冊表值。

通過 CMD 刪除某些服務時,可能會出現一條消息,指出該服務已標記為刪除,表明已計劃刪除該服務,但可能需要關閉相關句柄或重新啟動系統才能完成該過程。

DeleteService FAILED 1072:
The specified service has been marked for deletion.

計算機重新啟動後,該服務將自動刪除。

有關的:如何從 PowerShell/CMD 將日誌寫入 Windows 事件查看器

要刪除服務而不重新啟動 Windows,請使用taskill命令或終止服務正在運行的可執行進程Task Manager。然後使用以下 PowerShell 命令刪除服務註冊表項:

Get-Item HKLM:SYSTEMCurrentControlSetServicesstunnel | Remove-Item -Force -Verbose