在自拟文件类型中文件图标问题

最近想自拟一个简单的文件类型,接触了注册表,了解了HEX,ClassRoot等。之后了解了一些抽象数据类型后,想看看txt,bat格式文件的DefaultIcon时都是dll,但是能用C#Microsoft.RegistyKey修改注册表时,如果要给自定义文件绑定一个图标时,要给出图标文件ico 路径,很好奇为什么有名的txt file,batfile下值对应的是dll后跟序列号,这些文件图标文件打包为什么要成dll,会什么好好图标文件要装在exe,dll中还要给个给个序列号。

那种只包括图标的DLL叫做Resource-Only DLL
https://docs.microsoft.com/en-us/cpp/build/creating-a-resource-only-dll?view=msvc-170

把图标等资源打包成DLL具有以下优点

  • 可以节省内存:系统只需要加载一次DLL,所有其他程序模块都可以共享该DLL里的资源
  • 提高性能:加载一次,然后从内存里读取资源,不用每次都去硬盘里读资源文件
  • 方便更新