誰かがWindowsサービスを停止しようとしたときに、パスワードとユーザーの入力を求めるにはどうすればよいですか?
3 に答える
それはできません。
サービスは、ユーザー エクスペリエンスの外で実行することを意図しており、GUI の対話を処理しません。これは、ユーザーがサービスを停止することを許可または禁止するために、オペレーティング システムに任されているものです。
サービスから直接行うことはできません。ただし、サービスがデスクトップと対話するように設定されている場合は、サービスを別のアプリケーションで管理できます。そのため、サービスを監視する GUI を備えた 2 つ目のアプリケーションを作成できます。サービスは、サービスの「停止」イベントが発生したときに共有状態ファイルに値を設定し、監視アプリが状態ファイルに確認値を書き込むまで待機することができます。正確にはあなたが探しているものではないかもしれませんが、あなたが望む結果を得ることができると思います.
通常、これを行う理由はありません。デフォルトでは、管理者のみがサービスを停止できます。サービスを停止できる場合は、管理者にパスワードを要求しても意味がありません。管理者であるため、定義上、管理者は何でも実行できます。 。
理にかなっている1つのシナリオは、通常のユーザーがパスワードを知っている場合にサービスを停止できるようにする場合です。そうすれば、コンピュータの管理者権限を与えずに、誰かにサービスを停止させることができます。(それでも、ほとんどの場合、サービスのアクセス許可を変更して、問題のユーザーにサービスを停止する権利を許可する方が簡単です。ただし、たとえば、ユーザーがヘルプデスクに電話する必要がある場合などです。パスワードが与えられます。)
この作業を行う秘訣は、オペレーティングシステムから停止要求を受け取らなくても、サービスが何らかの理由で停止する権利があることです。したがって、ユーザーがサービスを停止したい場合に実行できるプログラムを作成するだけです。プログラムはパスワードを受け入れ、名前付きパイプなどの何らかの形式のIPCを介してサービスに送信します。パスワードが正しければ、サービスは停止します。
停止要求を受け入れないようにサービスを構成することもできます。その場合、管理者はサービスを適切に停止するためにパスワードも必要になります。しかし、それでも、サービスプロセスを強制終了したり、サービスをアンインストールしてコンピューターを再起動したりして、サービスを停止することはできません。