比如路径是:D:\Program Files (x86)\Tencent\QQ\Bin\MainFrame.dll
D:\Program Files (x86)\Thunder Network\Xmp\V5.1.12.3487\Bin\codecs\scmpack.dll
直接设置是不行的,该注册表可以设置图标。或许这些软件安装的时候,做了处理吧。
我刚才新建了一个xp的虚拟机,把上面的2个dll放置到xp系统上面,显示的是正常dll的图标。
因为手头没有win7的镜像,暂时验证不了。
不过刚才用exescope打开这2个dll,发现图标都存储在里面。
现在我的怀疑有2个可能:
1、你说的通过注册表设置的
2、win7的系统支持dll添加icon
具体要等win7镜像下载完成后才能进一步测试。
@不要呵呵: 也有可能是用软件压进去的,而且这些都不是C#编写的,说不定其他语言可以直接打包icon呢。
Windows 所有自带图标都在一个 dll 文件里(%SystemRoot%\system32\SHELL32.dll),所以,大概可以认为 dll 也可能是一种 Windows 能够解析的图片格式。
我个人觉得,dll不能算图片格式,windows读取的只是pe段里面的图片资源,SHELL32.dll里面有很多图片资源,windows给文件修改快捷方式的时候,可以指定shell32.dll文件,然后选择对应的编号。
我刚才用vs写了一个dll。然后pdf的图标插入进去了。生成的dll就是pdf的图标。如图
然后。我把我编写的dll复制到一个朋友的win7电脑上。也能正确显示pdf的图标。
放到xp虚拟机上后。还是xp默认的icon。
我觉得这样可以说明win7支持识别带icon的dll的。
若要证明这个观点是否是正确的,我想还是需要看win7对pe部分的sdk。
win7系统支持显示dll的icon