图标(DefaultIcon)显示不同

问题描述 投票:0回答:2

我正在努力处理应用程序文档文件的图标。
首先,我要注册文件扩展名:

HKEY_CLASSES_ROOT\.Ext\(default) = AppName

然后我给它一个 shell 打开命令和一个图标:

HKEY_CLASSES_ROOT\[AppName]\shell\open\command\(default)="path\app.exe"
HKEY_CLASSES_ROOT\[AppName]\DefaultIcon\(default)="path\app.exe",0

图标显示在资源管理器中,但不是原来的图标,而是显示在一张白纸上:

左边是关联文件,右边是可执行文件。

如何设置注册表项才能显示原始图标?

windows icons registry file-association
2个回答
2
投票

我不知道

DefaultIcon
是否支持路径上的引号,除了注册看起来没问题。

写完这些条目后,您应该调用

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0)
,以便其他应用程序可以自行刷新。

当 shell (

GIL_SIMULATEDOC
) 找不到有效的
DefaultIcon
条目但知道要使用哪个可执行文件时,会生成文档图标。如果您在未注册的情况下使用“打开方式”打开文件类型,则可能会发生这种情况。

尝试拨打

SHChangeNotify
,然后重新启动。如果这不能解决问题,那么您应该在注册表中搜索您的文件扩展名,并将其从 Explorers HKCU
FileExts
keys 以及 HKCR 中您的类型的任何“自动”条目中删除。清除 shell 图标缓存也可能有所帮助。


0
投票

到目前为止,您的问题的一部分尚未被答案涵盖:为什么您的图标显示在一张白纸上,而不是像您预期的那样单独显示?在 Windows 7 下,我观察到这是标准行为:即使对于 Word 文档和 Excel 电子表格也会发生这种情况。但我发现,如果为 DefaultIcon 指定的 .ico 文件仅包含大小为 16、32、48 和 256 的图像,我可以击败它,并强制图标单独显示。这就是 Windows 7 对 GIF 文件的做法,例如,它们使用“C:\Windows\System32\imageres.dll,-71”作为其 DefaultIcon,这是仅具有这些尺寸的图标组。

© www.soinside.com 2019 - 2024. All rights reserved.