2012-06-20 16 views
5

独自のレジスタハンドラを持つカスタムWindowsサービスを使用していますが、サービスマネージャから停止コマンドを受信したときに、私はサービスとGUIの間にパイプ通信を確立し、WindowsサービスマネージャからWindowsサービスを停止しようとしないときに、Windowsサービスにメッセージ「停止」を送信するときにGUIからのみ停止したい。私はC#で働いていますWindowsサービスマネージャによるサービスの停止を防止するC#

+2

マシンがシャットダウンするとどうなりますか?サービスを停止するコマンドはサービスマネージャーから来ていませんか? – Paparazzi

+1

Windowsサービスを使用する目的を無効にすることはありませんか? –

+3

私は目的を気にしない、私はちょうどそれをしたい。 – AlexandruC

答えて

11

これはあなたの質問に答えますか?

http://bytes.com/topic/c-sharp/answers/444965-prevent-service-stopping

falseにCanStopプロパティを設定します。その後、ユーザーが停止を要求するために使用できるアプリケーションが必要になります。このアプリケーションはあなたのサービスと(おそらくリモーティングを介して)通信し、条件が許可されている場合は、それを停止します。 'CanStop'を動的に設定し、ServiceControllerクラスを使用して自分自身に接続し、 'Stop'コマンドを発行することで、これを行うことができます。

+0

あなたのコメントに同意すると、OnStop内で停止コマンドを防止できません。私は私の答えを削除しました。 – Paparazzi

+0

が完璧です。私が探していたもの。 – AlexandruC

0

特殊なユーザーアカウント(およびおそらくSYSTEM)のみがサービスを停止し、インストール中にこの特別なローカルユーザーアカウントをインストールする権限を持つように、サービス設定(サービスDACLを変更)をセキュリティで保護することもできます。

コントロールアプリケーションは、この特別なユーザーのセキュリティトークンで標準のService Control Manager機能を使用することができ、珍しいことをすることなくすべてが期待通りに機能します。

関連する問題