システムに実行可能ファイルが残っていないときにWindowsサービスをアンインストールする方法は?


166

システムに実行可能ファイルが残っていないときにWindowsサービスをアンインストールするにはどうすればよいですか?installutil -uシステムに実行可能ファイルが残っていないため、実行できません。それでもサービスコンソールにサービスのエントリが表示されます。

この状態の理由は、サービスを正しく削除しないmsiパッケージの問題が原因であると考えられますが、サービスがこの状態になったら、どうすれば修正できますか?


回答:


325

「管理者」コマンドプロンプトで次のコマンドを実行すると、sc.exe(Windowsリソースキットに含まれていると思います)を使用してアンインストールできます。

sc.exe delete <service name>

どこ<service name>あなたがいないexeファイルの、サービス管理コンソールでそれを見るように、サービス自体の名前です。

sc.exeはSystemフォルダーにあり、実行するには管理者権限が必要です。このMicrosoft KB記事の詳細情報

または、DeleteService() APIを直接呼び出すこともできます。OpenSCManager()などを介してサービスコントロールマネージャーへのハンドルを取得する必要があるため、この方法は少し複雑ですが、一方で、何が起こっているかをより詳細に制御できます。


それは私が望んでいたことを正確に行い、サービスをレジストリから削除しました。サービスコンソールには表示されなくなりました。ありがとう!
マグナスリンデ2008

「アクセスが拒否されました」と表示されます。次はどうする?
Nick

4
PowerShellの方法1でコマンドを実行しようとする人へのメモ:scはサービスコントロールマネージャーとの通信用ではありません。Set-Contentコマンドです。代わりにsc.exeを使用してください。
Yasser Sinjab

1
エラー1072が発生した場合は、サービスのコントロールパネルを開いていないことを確認してください(この他の質問を参照)
Giles

以下のエラーが発生しました。[SC] OpenService FAILED 1060:指定されたサービスはインストールされたサービスとして存在しません。後でパワーシェルで同じことを試しましたが、うまくいきます!
crazydan

24

レジストリ経由でWindowsサービスを削除する

正しいパスを知っている場合、レジストリからサービスを削除するのは非常に簡単です。ここに私がそれをした方法があります:

  1. RegeditまたはRegedt32を実行します。

  2. レジストリエントリ「HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services」に移動します。

  3. 削除するサービスを探して削除します。キーを見て、サービスが使用していたファイルを確認し、それらを削除することもできます(必要な場合)。

コマンドウィンドウからWindowsサービスを削除する

または、コマンドプロンプトを使用し、次のコマンドを使用してサービスを削除することもできます。

sc削除

次のコマンドを使用してサービスを作成することもできます

sc create "MorganTechService" binpath = "C:\ Program Files \ MorganTechSPace \ myservice.exe"

注:サービスマネージャでリストを更新するには、システムを再起動する必要がある場合があります。


3
レジストリを安全に使用していますか?レジストリの「最終結果」は、「の最終結果」と同じsc deleteですか。
Pacerier

5
いいえ、regeditから直接サービスを削除しようとしました。その結果、削除したいサービスのエントリはサービスに残りますが、その説明は「<Failed to Read Description。Error Code:2>」
GJです。

11

ここで見つかりました

Windows XPで試したところ、うまくいきました

ローカルコンピューター:sc \\。[サービス名]を削除

  Deleting services in Windows Server 2003

  We can use sc.exe in the Windows Server 2003 to control services, create services and delete services. Since some people thought they must directly modify the registry to delete a service, I would like to share how to use sc.exe to delete a service without directly modifying the registry so that decreased the possibility for system failures.

  To delete a service: 

  Click “start“ - “run“, and then enter “cmd“ to open Microsoft Command Console.

  Enter command:

  sc servername delete servicename

  For instance, sc \\dc delete myservice

  (Note: In this example, dc is my Domain Controller Server name, which is not the local machine, myservice is the name of the service I want to delete on the DC server.)

  Below is the official help of all sc functions:

  DESCRIPTION:
    SC is a command line program used for communicating with the
    NT Service Controller and services. 
  USAGE:
          sc

10

サービスを削除するためのPowerShellスクリプトは次のとおりです foo

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


3

同じサービスの実行可能ファイルのコピーを作成し、既存のサービスの同じパスに貼り付けて、アンインストールします。


それは良い提案です。
それでも問題が解決

同じexeのコピーを作成する必要がありますか、それとも他のファイルの名前を変更しても問題ありませんか?
Imran Rizvi 2012

@Samiksha、私は彼が「実行可能ファイルのコピー」を持っていないと言ったと思いましたか?
Pacerier

3

これにはPowerShellを使用します

Remove-Service -Name "TestService"

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/remove-service


PS6でのみ利用可能
BozoJoe

以下のエラーが発生しました。[SC] OpenService FAILED 1060:指定されたサービスはインストールされたサービスとして存在しません。後で電源シェルでsc delete <サービス名>を試してみましたが、正常に機能します!power shellのアイデアに感謝します。
crazydan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.