我有一个以扩展名保存的 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 中使用的图标保存在缓存中,用于优化图标的显示。
你可以:
重启你的电脑
通过更改图标大小来重新创建图标缓存(通过外观菜单更改)
通过删除图标缓存文件来重新创建它;
在 Windows XP 中删除该文件:
C:\Documents and Settings\Your User Name\Local Settings\Application Data\Iconcache.db
在 Vista/7 中删除该文件:
%USERPROFILE%\AppData\Local\Iconcache.db
删除后,从任务管理器终止每个 explorer.exe 进程并启动一个新的进程(这将重新创建图标缓存)。