2009-08-25 15 views
2

私は、ユーザーがシステムをシャットダウンまたは再起動しないようにします。私のアプリケーションはWin32 Native Service(C++で書かれています)として、そしてLocalSystemアカウントの下で動作します。システムがWin32サービスでシャットダウンまたは再起動するのを防ぐ方法

私はWM_QUERYENDSESSIONについて聞いたことがあります。それは隠されたウィンドウを作成し、シャットダウンを防ぐためにWM_QUERYENDSESSIONをキャプチャしています。

しかし、このソリューションは実際にはクリーンではなく、デスクトップごとに1つのウィンドウを作成する必要があります。だから私はデスクトップを列挙しなければならないときに、デスクトップが作成された/ destoryedについても気を付けなければならない。これらのすべてが状況を厄介にする!

シャットダウン/再起動イベントを検出し、システムシャットダウン/再起動を防止する方法はありますか?

(これは、それらの両方がキャンセルされている必要があり、イベントがシャットダウンまたは再起動することが重要ではありません!)

+0

ここで、自発的にリブートするのを防ぐことができたら、本当に何かがあるでしょう。 –

+0

@hoohoo:もちろん私はこれをやろうとはしません! – Isaac

答えて

1

あなたがすることはできません。

シャットダウン/再起動を防止するプログラムを許可すると、セキュリティ上の脆弱性が存在する可能性がありますので、思わないでください。

ユーザがシステムにシャットダウンまたは再起動を指示した場合、それが起こります。

現在のユーザーがWindowsからログアウトしたときに、WM_QUERYENDSESSIONが渡されます。これは通知であり、これ以上のことはありません。他の方法で使用している場合は、誤って使用しています。

+0

私はサイバーカフェを管理するためのソフトウェアを開発しています。 ソフトウェア機能の1つは、システムのシャットダウンを防止する必要があります。だから私は100%の解決策は必要ありませんが、シャットダウンを防ぐ必要があります定期的なケースです。 この場合、セキュリティ上の脆弱性ではありません。 – Isaac

+0

マイクロソフトは一人の人にとって何が最善であるか気にしません。彼らは大多数のユーザーにとって何が最善であるかを気にしています。プログラムの再起動/シャットダウンを防ぐことは、間違いなくそこにある大半のWindowsコンピュータのセキュリティ上の脆弱性です。 この種の機能が本当に必要な場合は、[スタート]メニューから再起動/シャットダウンを無効にするグループポリシーの設定を確認する必要があります。または、次のいずれかのユーティリティの作成者に連絡してください。 http://www.raymond.cc/blog/archives/2008/09/25/prevent-cancel-and-abort-a-windows-system-shutdown-または再起動時にアプリケーションが実行されている/ –

+0

私が望むときにシャットダウンを防ぐ方法が必要です。場合によってはシャットダウンを許可しなければならないことがあります。 グループポリシーはエクスプローラにルールを適用します。だから私はポリシーを変更するとき、私はExplorer.Exeを再起動する必要があります。だから私は現在のユーザーを検出し、彼と彼のトークンを使用してCreateProcessをImprestonateする必要があります。 私は正しいですか? – Isaac

関連する問題