Vista 管理者権限のワナ。TaskbarCreatedのブロードキャスト。
私は今VisualStuido2005(以下VS2005)を使ってフリーソフトを作っています。
で、VistaでVS2005を使う場合管理者権限に昇格して使う必要がある訳ですが、そうするとデバック起動したプログラムも管理者権限で起動してしまいます。それが原因でハマったので例として紹介したいと思います。
タスクバーが再起動したときに"TaskbarCreated"というメッセージがブロードキャストされることはご存知でしょうか?
通常は、このメッセージをキャッチしてタスクトレイ(通知領域)のアイコンを再表示させる訳なんですが、この機能をテストしようとした時です。
忘れていたのですが、タスクバーは一般権限で動いています。で、自分のプログラムはVS2005から起動したので管理者権限です。Vistaでは、一般権限のプログラムの発したブロードキャストを、管理者権限のプログラムはキャッチできません(ChangeWindowMessageFilterを使えばキャッチ可能になりますが使わない方がセキュリティ上は良いです)
当然ながら、タスクバー(エクスプローラ)を無理やり終了して再起動しても一般→管理者なのでメッセージをキャッチできません。気づかずに1時間ほど悩んでしまいました(^_^;)
結果、普通にエクスプローラからテストするプログラムを一般権限で起動してタスクバーを再起動させて確認できました。みなさんも注意してください。管理者権限は、色々と罠がありますよ。
2008/10/12 | プログラミング | COMMENT(0) | TRACKBACK(0) TOP






コメント
コメントの投稿
トラックバック
この記事にトラックバックする(FC2ブログユーザー)