ページ

2010年11月21日日曜日

タスクバーの通知アイコンがたまに消える件

Windows使っていて、タスクバーの通知アイコンがたまに消えてしまうことがあります。

復旧させるには、タスクバーのプロパティ→通知領域タブでシステムアイコンを再選択してやればいいのですが、そもそもなぜ勝手に通知アイコンが消える(あるいは表示されない)のか不明のままでは気持ち悪いですし、また、たまに通知領域タブで選択項目自体がグレイアウトしている(選択不可)こともあります。

まず、通知アイコンが表示されない件ですが、調べていたらこういうページ Systray icons missing | Windows Problem Solver を見つけました。これによると、通知アイコンを表示させるために Shell_NotifyIcon API を使うのですが、内部的にはタスクバーとのある種の通信を行なうため、タイムアウトが設定されていて、一定時間内に応答がないと処理をキャンセルするようになっているそうです。このため、システム負荷が重い場合には、このタイムアウトによって通知アイコンの登録に失敗してしまい、結果として通知アイコンが表示されなくなる、ということのようです。本質的な問題は、どうもこのタイムアウトが固定になっていて(4秒)、高負荷状況ではちょくちょくタイムアウトに引っ掛かってしまう点にあるようです。上の記事によるとDLLにパッチを当てて直した人がいるようですが(良くやる!)、Windows UpdateでDLLが更新されて元に戻ってしまったそうで。最終的にはMSが直すしかないわけですが、タイムアウトは長くすればいいというものでもありません(実際にトラブル起きた時に困ります)。ユーザレベルでの対処としては、情けない話ですが、ログオンのプロンプトが出た時(には裏で各種の処理が進行中)、即時にログオンするのではなく、裏での処理がおちついてから(ディスクアクセスランプを見ていれば判ります)ログオンすると、比較的ですが、確実に通知アイコンが出るようになる、ということでした。

選択項目がグレイアウトしている件の方は、ある意味では単純な話しで、当該機能が使用不能になっていると、選択自体無効になるのでグレイアウト表示されるようです。大抵は、その機能が必要とするサービスが停止してしまっている場合ですね。問題はどのサービスがどの機能にとって必要とされているかの説明が結構いいかげんなことです。以前に(システム負荷軽減のため)Function Discovery Resource Publication サービスを停めてみたことがあります。サービスのプロパティでは、このサービスに依存しているシステムコンポーネントは無いことになっていますが、これを停めたらネットワークアイコンも消えてしまいました(選択自体無効表示になりました)。無論、サービスを再開させて再起動したらネットワークアイコンは現れてきましたが。結構こういう問題があり、サービスをいじる時にはこわごわになってしまいます。

0 件のコメント:

コメントを投稿