目次
検証環境
- Windows 10 Pro 64bit (22H2)
- Windows 11 Pro (23H2)
2024/6/24に更新
コマンド(バッチファイル)内容と解説
現在の動作
①「IconCacheRebuilding_WinAPI.bat」
WinAPI「SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0)」を実行、アイコン表示更新をExplorerに促す
だいたいはこれで事足りますが、ダメな場合は以下②を実行します
②「IconCacheRebuilding_DELETE.bat」
Explorerを終了→アイコンキャッシュファイル(IconCache.db)削除→Explorerを再起動
WinAPI「SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0)」を実行、アイコン表示更新をExplorerに促す
以下のファイルはユーザーが直接実行する事は無いですが、必要なファイルなので必ず他の.batファイルと一緒の場所に置いて下さい
「IconCacheRebuilding_WinAPI.ps1」
WinAPI「SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0)」を実際に実行しているコードです
昔の動作と試行錯誤
以前は
ie4uinit.exe -ClearIconCache
ie4uinit.exe -show
の2つのコマンドでだいたい問題ありませんでしたが、ある日Windows10・11でこのコマンドが使えなくなりました
元々はIEのインストールで使われるコマンドの様なので、恐らくIEサポート終了と共に使えなくなったんでしょう
IE11 インストール後の初回ログオン時に初期化ユーティリティが異常終了することがある
このバッチファイルを使っても解決しない場合
だいぶ面倒な状態になってると思われるので、
素直に「セーフモードで起動」→「サインイン」→「再起動」するのが良さそうです
参考Webページ
- SHChangeNotify 関数 (shlobj_core.h) - Win32 apps | Microsoft Learn
- 進め!中級プログラマー 創刊号 - シェルと仲良くする(part1)
- SHChangeNotify doesn't refresh icons in C# exe, but does in powershell command prompt, Windows Server 2019 - Stack Overflow
- Forcing windows explorer icons to update?
- Windowsでアイコンキャッシュを再構築する方法 | マイナビニュース
- 各Windows OSで利用できるIEのバージョンを知る:Tech TIPS - @IT
- (web.archive.org 2024/6/24)Windowsアイコンキャッシュ再構築コマンド・バッチファイル - DoldoTeaParty
古い解説は、このページから削除されています
その部分を見たい場合は、上記URLに保管されたページをご覧下さい
情報を公開するなら、確認してからにしてください。
このサイトを見た同僚から問い合わせがありました。
できません。どうにかなりませんか? と。
ここに書いてあることは、事実と異なります。
迷惑です。
バイナリファイルを見るだけでも、確認できるはずですが...
FileDescription: IE Per-User Initialization Utility
IE11 (Windows 10)
FileVersion: 11.00.18362.628 (WinBuild.160101.0800)
Options:
-hide
-show
-reinstall
-apply
-UserConfig
-IECleanup
-UserIconConfig
-BaseSettings
-ClearIconCache
-UpgradeOldHistoryEntries
-InitHistoryRoaming
-CleanupEmeDataStores
IE8
FileVersion: 8.00.6001.23261 (longhorn_ie8_ldr.111021-1815)
Options:
-RemoveBaseSettings
-BaseSettings
-UserIconConfigDelayed
-UserIconConfig
-UserConfig
-ShowQLIcon
-apply
-reinstall
-show
-hide
以下に、 ie4uinit%s.log の名前で、実行したコマンドのログファイルが作成されるので、見ればわかると思います。
%USERPROFILE%\AppData\Local\Microsoft\Internet Explorer
> Microsoft Windows [Version 10.0.18363.657]
> (c) 2019 Microsoft Corporation. All rights reserved.
>
> C:\Users\nobody>ie4uinit -show
>
> C:\Users\nobody>cd "AppData\Local\Microsoft\Internet Explorer"
>
> C:\Users\nobody\AppData\Local\Microsoft\Internet Explorer>type ie4uinit-show.log
> 02/28/2020:12:14:34: Starting ie4uinit.exe. Command Line:-show
> 02/28/2020:12:14:34: Executing Command: -show
> 02/28/2020:12:14:34: In CmdShowIcons
> 02/28/2020:12:14:35: Command Result: 0x00000000
> 02/28/2020:12:14:35: ie4uInit.exe exiting. Process Result: 0x00000000
> ======================================================
>
> C:\Users\nobody\AppData\Local\Microsoft\Internet Explorer>ie4uinit -ClearIconCache
>
> C:\Users\nobody\AppData\Local\Microsoft\Internet Explorer>type ie4uinit-ClearIconCache.log
> 02/28/2020:12:16:28: Starting ie4uinit.exe. Command Line:-ClearIconCache
> 02/28/2020:12:16:28: Executing Command: -ClearIconCache
> 02/28/2020:12:16:28: In CmdClearIconCache
> 02/28/2020:12:16:28: In MigrateWinInetCache
> 02/28/2020:12:16:28: MigrateCacheForCurrentUser() returned: 0x00000000
> 02/28/2020:12:16:28: Command Result: 0x00000000
> 02/28/2020:12:16:28: ie4uInit.exe exiting. Process Result: 0x00000000
> ======================================================
>
> C:\Users\nobody\AppData\Local\Microsoft\Internet Explorer>
検証では「ie4uinit.exe -Show」だけでもデスクトップのアイコンが更新されている事を確認出来ていたので、これで良いかと思っていたのですが、ダメな場合があるんですね
とりあえず、どの環境でも
「ie4uinit.exe -ClearIconCache」
「ie4uinit.exe -show」
の両方を実行する様に変更しました
たすかりました!