0

Visual Studio 2010 で新しい Windows サービス プロジェクトを作成し、イベント ビューアーに情報を出力するためのコードを少し追加しました。少し変更を加えるたびに、次のことを行います。

  1. サービスを停止する
  2. サービスをアンインストールする
  3. サービス ウィンドウを閉じます。
  4. タスク マネージャーで mmc のインスタンスが実行されていないことを確認します。
  5. サービスを再インストールする

手順 5 を試すと、インストールに失敗します。再度アンインストールしようとすると、「このサービスは削除対象としてマークされています」と表示されます。再起動しないとサービスを再インストールできません。これは非常に不便です。

私はオンラインで検索しており、それがステップ 3 と 4 を含める理由です。これは私にとってはうまくいきませんでした。VM インスタンスでのサービスのアンインストールとインストールに問題がないため、問題は自分のコンピューターにあるはずです。

私は Windows 7 を使用しており、Visual Studio 2010 の C# でサービスを作成しています。

4

4 に答える 4

3

実際には、小さな変更ごとにサービスをアンインストールする必要はありません。サービスが完全に停止していることを確認する必要があるだけで、サービスを構成する DLL を上書きしてから、サービスを再開できます。

于 2013-09-12T12:28:39.547 に答える
0

手動プロセスを実行する代わりに、コマンド プロンプトから次のコマンドを実行します。

sc delete [サービス名]

于 2013-09-12T12:27:07.253 に答える
0

sc delete はレジストリからイベント ソースを削除せず、サービスのログはまだそこにあります。regedit を実行し、サービス名でエントリを見つけます。イベント ログの結果がまだある場合は、それらを削除できます。特にサービスの名前がイベントログと同じ場合に役立つはずです

また、サービスウィンドウのこの奇妙な動作が時々あります。サービスをアンインストールしようとしたときにサービスが開いていると、削除がスケジュールされているだけで、実際には削除されないことに気付きました。したがって、ポイント 2 と 3 を切り替えます。

また、.bat ファイルを作成し、そこで installutil.exe を呼び出してサービスをアンインストールすることもできます。正しい installutil.exe である必要があるだけです。マシンには複数存在する可能性があります。異なるフレームワークの場合、x86 x64... 構成に適している必要があります。

そして、本当に必要でない限り、そのサービスウィンドウを閉じたままにしておいてください:)

@ECHO OFF

REM The following directory is for .NET 2.0 on x64 system
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727
set PATH=%PATH%;%DOTNETFX2%

echo Uninstalling WindowsService...
echo ---------------------------------------------------
InstallUtil /u "path to your service"
echo ---------------------------------------------------
echo Done.
于 2013-09-12T12:49:21.623 に答える