web-dev-qa-db-ja.com

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

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

この状態の理由はおそらく、msiパッケージに問題があり、サービスが正しく削除されないためですが、サービスがこの状態になったらどうすれば修正できますか?

157
Magnus Lindhe

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

sc.exe delete <service name>

ここで、<service name>は、exeではなく、サービス管理コンソールで表示されるサービス自体の名前です。

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

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

310
Treb

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

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

  1. 実行RegeditまたはRegedt32

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

  3. 削除するサービスを探して削除します。キーを調べて、サービスが使用しているファイルを確認し、必要に応じてそれらを削除することもできます。

コマンドウィンドウを介してWindowsサービスを削除

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

sc delete

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

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

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

24
kombsh

ここにあります

私は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
11
Fredou

これを行うための私のお気に入りの方法は、 Sysinternals Autoruns applicationを使用することです。サービスを選択して[削除]を押すだけです。

9
Thomas Bratt

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

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

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

3
Samiksha

これにはPowerShellを使用します

Remove-Service -Name "TestService"

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

1
JoeRod