189

installUtil.exeを使用してWindowsサービスをインストールしました。

コードを更新した後、installUtil.exeを再度使用して、最初に元のバージョンをアンインストールせずにサービスをインストールしました。

サービスをアンインストールしようとすると、installUtil.exeはアンインストールを正常に完了しますが、サービスは引き続き表示されます。

プロパティを変更しようとすると、「サービスは削除対象としてマークされています」というメッセージが表示されます。

どうすれば強制的に削除できますか(できればサーバーを再起動せずに)?

4

20 に答える 20

512

過去に私を悩ませてきたのは、サービスビューアを実行していると、サービスが完全に削除されないため、事前に閉じることです。

于 2009-10-28T15:34:19.413 に答える
154

マシンを再起動する必要はありません。昇格モードで cmd または PowerShell を開始します。

sc.exe queryex <SERVICE_NAME>

すると何か情報が得られます。PID番号が表示されます。

taskkill /pid <SERVICE_PID> /f

/f は強制停止です。

これで、サービスをインストールまたは起動できます。

于 2011-06-09T12:21:57.130 に答える
105

万一、アンインストールしても削除されない場合は、SC.EXE を使用して任意の Windows サービスを強制的に削除できます。

sc delete <Service_Name>

「MS Techno Blogging」の詳細を読むサービス MMC から強制的にサービスを削除する

于 2009-10-08T21:01:28.117 に答える
40

これが役に立たないことはわかっていますが、将来誰かを助けるかもしれません。

サービスマネージャーを閉じて再度開くと、レジストリから両方のエントリが削除され、サービスのアンインストールが完了しました。

それ以前は、サービス マネージャーを更新しても効果はありませんでした。

于 2010-11-11T16:05:13.557 に答える
12
sc delete sericeName

これを行う前に、サービスが停止していることを確認してください。私はこの作品をほとんど見ました。Windowsが何かに引っかかって、再起動を要求するのを見たことがあります。

于 2008-10-24T03:51:26.917 に答える
5

cmd とサービス ウィンドウが開いている場合は閉じてから、右クリックして [管理者として実行] を選択し、cmd を再度開始します。sc delete serviceName動作しない場合、または何も動作しない場合。

http://weblogs.asp.net/avnerk/archive/2007/09/05/windows-services-services-msc-and-the-quot-this-service-is-marked-for-deletion-quot-error. aspx

于 2013-02-12T09:45:48.440 に答える
4

残念ながら、サーバーを再起動する必要があります。これにより、「削除された」サービスが削除されます。

于 2008-10-22T11:16:38.487 に答える
3

また、次の点にも注意してください。

sc delete "ServiceName"

sc は PowerShell では機能しません。sc は PowerShell のコマンドレット Set-Content のエイリアスです。あなたがする必要があります:

sc.exe delete "ServiceName"
于 2020-03-17T11:48:20.777 に答える
2

以下は、マシンを再起動せずに機能します。

  1. レジストリ \ HKEY_LOCAL_MACHINE で < Your Service Name > (キーと値の両方) を検索します。
  2. 「レガシー」値を 0 に設定します
于 2012-03-28T05:59:05.247 に答える
1

アンインストールを呼び出す前にサービスを停止してみましたか?私はこの問題をランダムに抱えていました。いつか再起動せずに削除できました。私の推測では、それはまだ実行中のサービスに関係していると思います

于 2008-10-24T03:30:25.150 に答える
1

遅くなりましたが、奇妙に見えるかもしれない代替案を追加したいと思いますが、別の方法が見つかりませんでした:

毎晩 CI プロセスで Windows サービスをインストールするので、常に機能し、完全に自動化されたものが必要でした。何らかの理由で、サービスをアンインストールした後、サービスは常に長時間 (5 分以上) 削除対象としてマークされていました。したがって、再インストール バッチ スクリプトを拡張して、サービスが実際に削除されていることを確認します (簡易版)。

REM Stop the service first
net stop My-Socket-Server

REM Same as installutil.exe, just implemented in the service
My.Socket.Server.exe /u

:loop1
    REM Easy way to wait for 5 seconds
    ping 192.0.2.2 -n 1 -w 5000 > nul
    sc delete My-Socket-Server
    echo %date% %time%: Trying to delete service.
    if errorlevel 1072 goto :loop1

REM Just for output purposes, typically I get that the service does not exist
sc query My-Socket-Server

REM Installing the new service, same as installutil.exe but in code
My.Socket.Server.exe /i

REM Start the new service
net start My-Socket-Server

私が見ることができるのは、サービスが最終的に処理されるまでの約 5 分間 (!) 削除対象としてマークされていることです。最後に、手動による介入はもう必要ありません。将来、スクリプトを拡張して、一定時間後に何かが起こるようにします (例: 30 分後に通知)。

于 2014-02-24T09:25:36.023 に答える
0

サービスリストを更新することは常に私のためにそれをしました。サービスウィンドウが開いている場合、何らかの理由で存在するメモリを保持します。F5と私は再び再インストールしています!

于 2009-10-28T15:26:39.663 に答える
0

また、実行可能ファイルのインスタンスがまだアクティブになっていないことを確認してください (おそらく、何らかの理由で、サービスとは無関係に実行されていた可能性があります)。

MMC を開いたり閉じたりして、強制終了する PID を探していましたが、プロセス エクスプローラーを見ると、忘れられていたスケジュールされたバッチから実行されているプロセスがいくつか存在していました。彼らを殺した。ジョブ完了。

于 2013-03-06T11:03:29.150 に答える
0

その件に関しては、フォーラムの質問がたくさんあります。

Windows APIで答えを見つけました。サービスをアンインストールした後、コンピューターを再起動する必要はありません。電話する必要があります:

BOOL WINAPI CloseServiceHandle(
  SC_HANDLE hSCObject
);

これにより、サービスのハンドルが閉じられます。Windows 7では、私の問題を解決しました。そうです:

  • サービスを停止
  • ハンドルを閉じる
  • アンインストール サービス
  • 3秒待つ
  • 新しいexeをディレクトリにコピーします
  • サービスをインストールする
  • サービス開始
  • ハンドルを閉じる
于 2013-05-23T16:14:35.167 に答える