如何为与应用程序不相关的文件类型注册新图标

如何为与应用程序不相关的文件类型注册新图标

对于我的文件后缀“.special”,我创建了一个新图标并将其存储为名为 c:\special.ico 的文件。

我还创建了一个新的注册表值 HKEY_CLASSES_ROOT.special\ (标准) REG_SZ c:\special.ico

重新启动电脑后,我的文件 c:\special.ico 会在文件管理器中列出,并且前面会显示新图标,但是我的所有文件 c:\somefolder\somefilename.special 仍然会继续显示旧的默认图标。

我需要做什么才能让它们显示新的图标?

答案1

看来您忘记添加DefaultIcon子项了。那么...

为 DefaultIcon 子项分配一个 REG_SZ 类型的默认值,该值指定包含图标的文件的完全限定路径。

来自微软开发者资源 -如何为文件类型分配自定义图标

然后您必须调用图标缓存更新。与完全重建缓存相比,REFRESH 是一种简单的方法,只需从对话框中运行以下命令即可Run

对于 Windows 10;ie4uinit.exe -show

适用于Windows 7和8;ie4uinit.exe -ClearIconCache

答案2

MS 文档是正确的,但缺少每个用户(UserChoice 键)部分。如果 Userchoice 键存在并指向 ProgID,则该 ProgID 将生效,而不是 HKCR\ProgID 中的 ProgID。

如果您可以发布扩展的文件类型转储.special,那么有人将能够更好地帮助您。文件类型诊断是一个可以生成完整报告的优秀工具。

答案3

CharlieRB 和 w32sh,谢谢你们!我特别感谢 w32sh 提供的 FileTypeDiag 链接,这似乎是一个我以前不知道的有用工具。

MS 链接中的文本确实有效,但不够精确;相应的示例完全放错了位置,甚至是错误的。

当您只想要一个新文件类型(即尚未与某个应用程序关联的文件类型)的新图标时,如果后缀/文件类型为 .x 且包含该图标的文件(.exe、.ico 或其他)的完整路径为 c:\y.ico,则您可以在注册表中执行以下操作

在 HKEY_CLASSES_ROOT 中

.x(即您创建一个新密钥,将其留空,不要省略点,它是密钥名称的一部分)

.x\DefaultIcon(在新的键 .x 中创建一个新的子键 DefaultIcon)

具有以下值:

(标准)(类型:REG_SZ)c:\y.ico(不需要双引号(“”))

关闭并重新启动 PC 或简单地注销用户然后重新登录(仅仅是用户改变就像简单的“刷新注册表”一样不够),然后你将在文件管理器中看到你的 .x 文件,以及它们的新的y 文件中的图标。(在不更改图标文件名/位置的情况下更改图标后也是如此,即当您替换图标文件的内容时:然后,只有在重新启动或用户注销登录后,新图标才会再次可见。)

干杯!

相关内容