什么决定了 Windows 资源管理器显示特定文件的图标?

什么决定了 Windows 资源管理器显示特定文件的图标?

我有一个以扩展名保存的 XML 文件.xml。XML 文件已注册为使用 Notepad++ 打开,双击该文件会按预期在 Notepad++ 中打开它。但是,图标显示它是一个 Excel 文件,这是正确的 - 该文件的格式为 SpreadsheetML。

我习惯将文件与特定程序关联来打开它们,但是 Windows 资源管理器如何知道显示该文件的 Excel 图标?

答案1

我很确定发生了什么,当您将 Office 安装到 Windows 7 计算机上时,它会将 XML 图标路径从静态路径(参见:HKEY_CLASSES_ROOT\xmlfile\DefaultIcon在注册表中)更改为“%1”变量。

结合该xmlfile条目也有一个ShellEx\IconHandler键的事实,这意味着图标是由 DLL(或其他处理程序)动态控制的。如果您在 IconHandler 默认值的数据中查找 GUID,则可以找出正在使用哪个程序来处理该图标。

我的恰好是 {AB968F1E-E20B-403A-9EB8-72EB0EB6797E},所以我搜索了注册表,直到找到HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{AB968F1E-E20B-403A-9EB8-72EB0EB6797E}\InprocServer32

其中列出了“C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE12\MSOXEV.DLL”作为处理它的程序。因此,当查询 XML 时,会检查 MSOXEV.DLL,这会深入询问文件并确定要显示哪个图标。

还有一个StackOverflow 上对类似问题的回答中有很好的解释如果你也想去看看的话。

答案2

Windows 中使用的图标保存在缓存中,用于优化图标的显示。

你可以:

  1. 重启你的电脑

  2. 通过更改图标大小来重新创建图标缓存(通过外观菜单更改)

  3. 通过删除图标缓存文件来重新创建它;

    • 在 Windows XP 中删除该文件:

      C:\Documents and Settings\Your User Name\Local Settings\Application Data\Iconcache.db
      
    • 在 Vista/7 中删除该文件:

      %USERPROFILE%\AppData\Local\Iconcache.db
      

删除后,从任务管理器终止每个 explorer.exe 进程并启动一个新的进程(这将重新创建图标缓存)。

相关内容