CanStopがFalse(C#)に設定されている場合にWindowsサービスを停止する方法
質問
Ok soパート2 私は意志がないパワー実験は:
概要の質問- WindowsサービスでCanStopプロパティを動的に設定する方法はありますか
全スピール- 現在、プロセス(IEゲーム)をチェックおよび強制終了するサービスがあります。許可されていない日であるかどうかを通知しています。すばらしいです。 CanStopをfalseに設定して、依存症に陥った場合にサービスを強制終了できないようにします。パスワードが正しい場合にサービスを停止するパスワードチェック(他の人がパスワードを入力する)を行うプログラムがあります。 (深刻な引き出しがある場合)問題はServiceControllerクラスの使用です。
私が知る限り、ServiceControllerは単なるデコレータであり(デザインパターンの推測です)、実際のサービスに到達する方法はありません。最初の試みはProperty Infoでしたが、私はあまりにも無意味で、それが無意味であることを理解できませんでした。 2番目はフィールド情報でした。「表す」プライベートフィールドがあるかもしれないと思ったからです。サービス。ご想像のとおり、両方とも失敗しました。
アイデアはありますか
編集1 構成ファイルまたはレジストリのように簡単にアクセスできる場所にCanStop値を持たないようにします。だから、私はこれをプログラムで完全に処理しようと試みていますが、成功していません。
新しい(失敗した)試行:
ManagementObjectサービス。 ManagementBaseObject stopService;
service = new ManagementObject(" Win32_Service.Name = 'StopProgram'");
stopService =サービス .InvokeMethod(" StopService&quot ;, null、 null);
これが何をしたかはわかりません。 CanStop状況のために停止できなかったと思われます。
解決
" CanStop" Windowsサービスコントロールマネージャーでのサービス登録の属性です。途中で変更することはできません。
そして、もちろん、あなたがあなた自身のサービスを書くのに十分賢いなら、あなたはタスクマンを育てて、単にサービスプロセスを殺すのに十分賢いです。 CanStopは、サービスの下からラグを引き出すことを妨げません。 CanStopは、「Stop」を送信しないようにサービスコントロールマネージャーに指示するだけです。サービスへのコマンド。
何かの通過を許可する場合は、グローバルイベントを使用して、サービスのチェックを有効/無効にするか、PCからゲームを削除します! :-)
他のヒント
サービスに直接アクセスして制御しようとするのではなく、制御しようとしているイベントを実行する前にサービスによってチェックされるフラグ(レジストリやファイルなど)を設定できますか?