如何将文件类型与图标关联?

5
我已经为一些自定义文件类型编写了预览处理程序。这些文件类型默认没有可以打开它们的应用程序。我想将一个图标与这些文件类型关联起来,作为它们是自定义文件的标志。
我尝试在 HKCR\.<filetype> 中设置 DefaultIcon 的注册表项,但似乎不起作用,即使重新启动后也是如此。我使用 C# 进行这些注册表修改,并且修改成功。
图标文件只是一个ico文件,目前驻留在 %APPDATA% 中。我计划添加几个更多的图标,并将这些图标放入 dll 文件中。在进行下一步之前,我只想让它正常工作。
如何设置这个图标?

看起来是这个的副本:https://dev59.com/zUjSa4cB1Zd3GeqPHKm7 - Sanjamal
我已经查看了那个问题。他似乎是通过将文件类型与程序关联来获取他的图标。这就是我想要避免的。 - Corey Larson
2个回答

6
这里有一个简单的.REG文件,它为文件扩展名.tj注册了一个图标。
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.tj]

[HKEY_CLASSES_ROOT\.tj\DefaultIcon]
@="D:\\scratch\\testy\\icons\\tj.ico"

已在Win7上测试


那看起来几乎和我正在做的一样。有任何大小、格式上的限制吗?如果我提供完全合格的路径,图标可以存在于%appdata%中吗? - Corey Larson
1
我认为完全限定的路径是必要的,我怀疑%appdata%是否会起作用,因为它对于每个用户都会转化为不同的值。 - John Knoeller
1
不支持Win10。 - Mehdi Dehghani

2

这篇MSDN文章解释了如何为文件类型分配自定义图标


这是我最初遵循的步骤,试图让它正常工作。我应该从C#中调用什么来执行SHChangeNotify函数?重新启动不会达到同样的效果吗? - Corey Larson
应该可以工作。但是它需要像John所示的图标的绝对路径。类似于%AppData%这样的路径引用不起作用。 - Bhuvan
这个MSDN不起作用。 - Damien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接