Windows 11で、デスクトップやエクスプローラー内のアイコンが「白くなる→元に戻る」を繰り返す問題が発生しました。
Explorerを再起動すると一時的に収まるものの、しばらくすると再発。アイコンキャッシュの再構築でも完全には解消しませんでした。
調査した結果、今回の環境では、PDFelementのシェル拡張が自身の削除・再登録を繰り返していたことが原因でした。問題を起こしていたインストーラーを無効化すると、点滅と高負荷が止まりました。
同じ症状でも原因は異なる場合があります。この記事は、実際に調査・確認した一事例として紹介します。
発生していた症状
特徴的だったのは、ZIPファイルを選択する場所によって症状が変わることです。
- エクスプローラーのウィンドウ内でZIPを選択すると点滅する
- デスクトップ画面上で同じZIPを選択しても点滅しない
- デスクトップフォルダーをエクスプローラーで開き、そのZIPを選択すると点滅する
- 点滅中もExplorerはクラッシュせず、PIDも変わらない
ExplorerのCPU使用率も上がり、アイコンキャッシュは数百MBまで膨らんでいました。
最終確認時の環境は、Windows 11 25H2、OSビルド26200.9278です。PDFelementは更新後の12.2.20.4463でも再現しました。
一般的な対処では解消しなかった
Explorerの再起動やアイコンキャッシュの再構築は、一時的には効果がありました。しかし、ZIPを選択すると再発しました。
新規ローカルユーザーやセーフモードでも再現し、Windowsの修復再インストール後も症状が残りました。一方、Windows Sandbox内では正常でした。
また、PDFelementのシェル拡張パッケージを削除しても改善しませんでした。後から分かったのですが、削除したパッケージが再び登録されていたためです。
ETWとイベントログで再登録ループを特定
原因の特定には、Windows Performance Recorderで採取したETW記録と、Windowsのイベントログを使いました。
Explorerの実行スタックを解析すると、次の処理が大量に動いていました。
shell32.dll!StateRepoNewMenuCache::RebuildCacheWorker
shell32.dll!StateRepoNewMenuCache::LookupShellNewExtensions
windows.storage.dll!StateRepoVerbsCache::RebuildCacheWorker
windows.storage.dll!CLoadSystemIconTask::InternalResumeRT
これらは、新規作成メニュー、アプリ拡張の操作メニュー、アイコン取得に関係する経路です。
さらに、次のイベントログを同じ時間帯で確認しました。
Microsoft-Windows-AppXDeploymentServer/Operational
イベントID 603には、約25秒間で次の要求が記録されていました。
PDFelement.ShellExtensionの削除:20回PEShellExtension.msixの追加:21回
イベントの詳細には、実行元として次のファイル名が明記されていました。
PEShellExtension.Installer2.exe
ETWのプロセス記録でも、このインストーラーが21回起動され、すべて問題のフォルダーを開いていたExplorerの子プロセスになっていました。
つまり、PDFelementのシェル拡張が繰り返し登録し直され、それに合わせてExplorerのメニュー情報やアイコンが更新されていたのです。
「デスクトップ上の選択では正常、フォルダー画面内の選択では異常」という差も、フォルダー側の操作メニュー評価が起点になるという見方に合いました。ただし、PDFelement内部のどのソース関数が再登録を始めるかまでは確認していません。
対処:問題のインストーラーを無効化する
今回の環境では、次のファイルが対象でした。
C:\Program Files\Wondershare\Wondershare PDFelement for Windows (日本語)\PEShellExtension.Installer2.exe
インストール先は環境によって異なります。同じ名前のファイルがあるというだけで判断せず、イベントログの実行元と実際の起動経路を確認することが大切です。
最初は削除せず、復元できるようファイル名を変更しました。管理者として起動したPowerShellで実行します。
$installer = 'C:\Program Files\Wondershare\Wondershare PDFelement for Windows (日本語)\PEShellExtension.Installer2.exe'
Rename-Item -LiteralPath $installer `
-NewName 'PEShellExtension.Installer2.exe.disabled'
変更先の名前が既に存在する場合は、上書きせず別の退避名を使います。
その後、タスクマネージャーから「Windows エクスプローラー」を再起動し、同じZIPを選択して確認しました。
結果は次のとおりでした。
- 画面の点滅が停止
- PDFelementの削除・再登録要求が0回
- 観察中のアイコンキャッシュ増加が0MB
- ExplorerのCPU使用率が約0.01〜0.06%まで低下
PDFelement本体はアンインストールしていません。ただし、対象はシェル拡張の登録用ファイルなので、右クリックメニューなどの連携機能には影響する可能性があります。
PDFelementを更新すると再発した
対処後にPDFelementの更新通知があり、更新を適用したところ、再び点滅が始まりました。
確認すると、更新によって新しい PEShellExtension.Installer2.exe が作られていました。イベントログにも、同じ削除・再登録ループが再び記録されていました。
更新版のインストーラーも別名に変更して無効化すると、再登録要求、アイコンキャッシュの増加、画面の点滅がすべて止まりました。
その後、不要になった旧版・更新版の無効化済みインストーラーは、ごみ箱へ移しました。
リネームや削除は応急処置です。PDFelementの更新・修復でファイルが復元されると、再発する可能性があります。 今回の更新版でも症状が残っていたため、恒久対応にはPDFelement側の修正が必要と考えています。
同じ症状を調べるときのポイント
アイコンが点滅するからといって、アイコンキャッシュの破損だけが原因とは限りません。
今回、キャッシュの巨大化は症状の一部で、その背景にアプリ拡張の再登録ループがありました。キャッシュを作り直しても、登録変更が続けば再発します。
ZIP選択時に点滅する場合は、Explorerの実行スタックに加えて、AppXDeploymentServerのイベントログを確認すると、拡張パッケージを繰り返し登録している実行元を見つけられることがあります。
今回の決め手は、ログに残った PEShellExtension.Installer2.exe の起動と削除・追加の反復、そして、その起動を止めた後に点滅も止まったことでした。

コメント