独自の登録ハンドラーを持つカスタム Windows サービスがあります。サービス マネージャーから停止コマンドを受信したときにサービスが停止しないようにするにはどうすればよいですか? サービスと GUI の間のパイプ通信を確立しましたが、Windows サービス マネージャーから停止しようとしたときではなく、Windows サービスに「停止」メッセージを送信したときに、GUI からのみ停止したいと考えています。私はC#で働いています
2 に答える
これはあなたの質問に答えていますか?
http://bytes.com/topic/c-sharp/answers/444965-prevent-service-stopping
CanStop プロパティを false に設定します。次に、ユーザーが停止を要求するために使用できるアプリケーションが必要になります。その後、このアプリは (おそらくリモーティングを介して) サービスと通信し、条件が許可されている場合はアプリ自体を停止します。これを行うには、'CanStop' を動的に true に設定し、次に ServiceController クラスを使用して自分自身に接続し、'Stop' コマンドを発行します。
別の方法として、特別なユーザー アカウント (およびおそらく SYSTEM) のみがインストール中にサービスを停止し、この特別なローカル ユーザー アカウントをインストールする権限を持つように、サービス設定をセキュリティで保護する (サービス DACL を変更する) ことができます。
その後、制御アプリケーションは、この特別なユーザーのセキュリティ トークンを使用して標準の Service Control Manager 機能を使用でき、異常なことを何もしなくてもすべてが期待どおりに機能します。