Contents

CMD または PowerShell 経由で Wi​​ndows サービスを削除する方法

Contents

<本文>/images/how-to-delete-unused-windows-service.png

特定のプログラムまたはツールをアンインストールした後、未使用のサービスが Windows に残っている場合があります。この記事では、組み込みの CMD または PowerShell ツールを使用して Windows でサービスを適切に削除する方法について説明します。

Windows のサービス グラフィカル管理スナップイン (「services.msc」) は、サービスを開始、一時停止、または停止するための基本的なアクション ボタンのみを提供します。このコンソールを使用してサービスを削除することはできません。

たとえば、このタスクは、未使用の Stunnel TLS ラッパー サービスを削除することです (私の場合、このサービスは Stunnel でアプリのトラフィックを暗号化するために使用されました)。まずサービス名を取得します。この場合、それは stunnel です (サービス名 フィールドから名前をコピーします)。

/images/how-to-delete-unused-windows-service.png

自分の行動の潜在的な影響を徹底的に理解します。環境の中断を避けるために、サービスを削除する前に、サービスを無効にし、しばらくその動作を観察することをお勧めします。次の PowerShell コマンドを使用して、サービスの自動起動を無効にできます。

サービスを削除するときは注意することを強くお勧めします。環境の中断を避けるために、サービスを削除する前に、サービスを無効にし、しばらくその動作を観察することをお勧めします。次の PowerShell コマンドを使用して、サービスの自動起動を無効にできます。

Set-Service stunnel –startuptype disabled –passthru

サービス停止トンネル

/images/disable-and-stop-service-using-powershell.png

また、サービスを削除する前に、DependentServices パラメーターをチェックして、そのサービスに依存している他のサービスを確認してください。

Get-Service stunnel-DependentServices

サービスを削除する前に、サービスを停止する必要があります。サービス コンソールの 停止 ボタンをクリックするか、次のコマンドを実行します。

「ネットストップトンネル」

/images/net-stop-service-cmd.png

サービス設定は、レジストリの HKLM\SYSTEM\CurrentControlSet\Services キーに保存されます。

サービスを削除する前に、次のコマンドを使用してサービス構成を REG ファイルにエクスポートし、その設定をバックアップします。

reg import "HKLM\SYSTEM\CurrentControlSet\Services\stunnel""%HOMEPATH%\Documents\stunnel\_backup.reg"/y

/images/service-registry-key.png

これで、組み込みの sc.exe コマンドを使用して、名前でサービスを削除できるようになります (サービス名にスペースが含まれている場合は、引用符で囲みます)。

sc 削除トンネル

次のメッセージが表示されます。


SC DeleteService SUCCESS

/images/sc-delete-sc-deleteservice-success.png

sc.exe ツールを使用すると、リモート コンピューター上のサービスを管理できます。 M-FS01 コンピューター上のサービスを停止して削除するには、次のコマンドを実行します。

sc.ee \\m-fs01 stop ServiceName1

sc.exe \\m-fs01 delete ServiceName1

または、PowerShell を使用してサービスを削除することもできます。

Remove-Service stunnel

/images/remove-service-powershelle.png

Remove-Service コマンドレットは、PowerShell Core バージョン 6.x 以降で使用できます。

Remove-Service コマンドが含まれていない Windows PowerShell 5.1 では、WMI を使用してサービスを削除できます。

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

また、サービスを削除するには、HKLM\SYSTEM\CurrentControlSet\Services にあるレジストリ キーを削除します。正しいサービスを削除対象にしていることを確認するには、リストでサービスを見つけて、DisplayName パラメーターと ImagePath パラメーターにサービスの名前とその実行可能ファイルへの完全なパスが含まれていることを確認します。サービスキー全体を削除します。

/images/delete-service-key-from-the-registry.png

F5 を押してサービス コンソール リストを更新し、サービスが削除され、表示されなくなったことを確認します。通常は、ImagePath レジストリ値を指定することをお勧めします。

押してサービス コンソール リストを更新し、サービスが削除され、表示されなくなったことを確認します。通常、サービスを削除した後は Windows を再起動することをお勧めします。再起動後、レジストリ値によって参照される実行可能ファイルとディレクトリを削除できます。

CMD 経由で一部のサービスを削除すると、サービスが削除対象としてマークされているというメッセージが表示される場合があります。これは、サービスは削除予定であるが、プロセスを完了するには関連ハンドルを閉じるかシステムを再起動する必要があることを示します。


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

このサービスは、コンピュータの再起動後に自動的に削除されます。

Windows を再起動せずにサービスを削除するには、taskill コマンドを使用するか、タスク マネージャー からサービスの実行中の実行可能プロセスを終了します。次に、次の PowerShell コマンドを使用してサービス レジストリ キーを削除します。

Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\stunnel |削除項目強制詳細

*️⃣ 出典リンク:

特定のプログラムをアンインストールする、Stunnel を使用してアプリのトラフィックを暗号化する、PowerShell Core バージョン 6.x 以降、次の PowerShell を使用してサービスとレジストリ キーを削除した後に Windows を再起動する、