2

わかりましたので、 I have no will power 実験のパート 2は次のとおりです。

まとめの質問 - Windows サービスで CanStop プロパティを動的に設定する方法はありますか?

Whole Spiel - 私は現在、プロセス (IE ゲーム) をチェックして強制終了しているサービスを持っています。偉大な。CanStop を false に設定して、中毒になった場合にサービスを強制終了できないようにします。パスワードが正しい場合にサービスを停止するパスワードチェック(他の誰かがパスワードを入力)を行うプログラムがあります。(深刻な引き出しがある場合) ServiceController クラスの使用に問題があります。

私が知る限り、ServiceController は単なるデコレータ (設計パターンの推測) であるため、それが表す実際のサービスを取得する方法はありません。最初の試みは Property Info でしたが、私は愚かすぎて、それが無意味であることに気づきませんでした。2 番目はフィールド情報でした。サービスを「表す」プライベート フィールドがあるのではないかと考えたからです。ご想像のとおり、両方とも失敗しました。

何か案は?

EDIT 1 設定ファイルやレジストリのように簡単にアクセスできる場所に CanStop 値を設定することは避けたいと思います。そのため、成功していませんが、これをプログラムで完全に処理しようとしています。

新しい (失敗した) 試行:

ManagementObject サービス; ManagementBaseObject stopService;

service = new ManagementObject("Win32_Service.Name='StopProgram'");

stopService = service .InvokeMethod("StopService", null, null);

これが何かをしたかどうかはわかりません。CanStop の状況で停止できなかったと思います。

4

2 に答える 2

3

「CanStop」は、Windowsサービスコントロールマネージャーでのサービス登録の属性です。ストライドの途中で変更することはできません。

そしてもちろん、あなたがあなた自身のサービスを書くのに十分賢いなら、あなたはタスクマンを立ち上げて単にサービスプロセスを殺すのに十分賢いです。CanStopは、サービスの下からラグを引き出すことを妨げることはありません。CanStopは、サービスに「停止」コマンドを送信しないようにサービスコントロールマネージャーに指示するだけです。

何かを通過させたい場合は、グローバルイベントを使用して、サービスのチェックを有効/無効にします。または、PCからゲームを削除します。:-)

于 2008-09-29T18:00:58.297 に答える
0

サービスに直接アクセスして制御しようとするのではなく、どこかにフラグ(レジストリやファイルなど)を設定して、制御しようとしているイベントを実行する前にサービスによってチェックされるようにすることはできますか。

于 2008-09-29T17:32:31.923 に答える