2022年6月21日火曜日

[備忘録]Windows11 Explorerの右クリックメニューの反応が遅くなる件、解決(か?)

「 Windows11の」と書いたけれど、Windows10を使っていた頃から出ていた現象、Explorerの右クリックメニュー(コンテキストメニュー)でしばらくフリーズする件について、ようやく解決方法が分かったので、その備忘録。


現象はWindows10の頃から出ていた。Windows11が出た頃、もしかして直るかもしれないと淡い期待を込めてアップデートしたけれど、結局は直らずじまい、だましだまし使ってきたけれど我慢の限界が来て調べてみました。

現象の回避策としては、

・TortoiseSVN用のIcon Overlay Handlerを無効にする

というものでした。

えっ!?Context Menu Handlerではなく、Icon Overlay Handlerの無効化!?

確かに変です、でもこれを無効にすることでコンテキストメニューはスッと表示されるようになりました。


これまで、メニューが表示されるまでに10~30秒くらい待たされることがありました。一度メニューが表示されるようになると、続けて右クリックするとすぐに表示されていました。しかし、何分か別の作業をして再度Explorerに戻ってメニューを開こうとすると、また何十秒も待たされました。Explorerとは別のファイラーを使っても、コンテキストメニューを表示させようとすると同じ現象が発生していました。本当にイライラしながらも何とか我慢して使っていましたが、これでイライラから解放されました。


最終的には、フリーソフトのShellExViewが大変役に立ちました。手軽にContext Menu HandlerをEnable/Disable切り替えができるので助かりました。

Shell ExtensionのContext Menu Handlerのどれかが悪さしているだろうことは想像に難くないので、自前のテストプログラムを作り、レジストリを走査してContext Menu Handlerを実装しているWindows内DLLをロード&COM経由でハンドラを呼び出すようなテストをして調べていたのですが、作ったテストプログラムでは極端に遅くなる現象がどうしても再現せず、ほとんど諦めていました。

別の方法としては、ExplorerをVisual Studioのデバッガにアタッチしてシンボル情報(とは言っても、Windows系DLLのシンボルしか入手されませんが)や、デバッガ上のDLLロードタイミングなどから問題のDLLを探そうともしていましたが、こちらも問題の特定には至らなかったです。


それにしても、なぜIcon Overlay Handlerの無効化が回避策となり得るのか、本当に不思議です。でも、いいんです。PCなんてダマシダマシ使うものと割り切ってますから。


0 件のコメント:

コメントを投稿