在.NET中注册文件类型和自定义文档图标

我有生成文件的应用程序。 我想将这些文件与应用程序连接,以便双击文件启动我的应用程序。

一切正常,除了烦恼,图标看起来像我的应用程序的图标。 我想有一个应用程序图标和一个图标文件。

注册表中的DefaultIcon值需要“app.exe,1”语法,其中1是图标索引。 似乎.NET资源不是Win32资源。

我试过以下但没有成功:

  1. 选择“Embedded Resource”作为文件的构建操作。
  2. 将图标添加到资源文件。

唯一有用的是将图标文件与可执行文件分开并指向它。 然而,在我看来,这似乎是投降。

任何想法如何解决这个问题?

您是否尝试将2设置为图标索引?

编辑:我找到了一种方法,但你必须为每一个新的构建再做一次。

  1. 在Visual Studio中打开.exe文件(文件 – >打开文件)
  2. 右键单击图标文件夹,然后选择添加资源
  3. 单击“导入”按钮
  4. 选择.ico文件
  5. 您可能不得不弄乱图标编号,我认为最低编号(示例101)将是应用程序的图标
  6. 记住新图标编号并将其设置为索引

编辑2:试试这篇文章: http : //www.codeproject.com/KB/dotnet/embedmultipleiconsdotnet.aspx

如果您使用Wix工具集( http://www.wixtoolset.org )来安装您的应用程序,您可以让Wix处理文件类型和文档图标注册

这是我的魔法Wix咒语:

     <-- File Extension and associated document icon -->       

DefaultIcon还将接受作为Icon的有效.ico文件的路径。

您必须确保项目中的Win32图标不仅仅是.net图标。 我希望有人指出一个简单的方法来做到这一点,但同时,这里……

编译你的程序集,然后从Visual Studio中选择“文件 – >打开 – >打开文件”,打开编译的程序集。 添加要用于文档的图标,并将其ID设置为高于应用程序使用的ID。 保存程序集。 现在您有可用的Win32资源。

– 编辑 –
编辑完他的post后,ZippyV似乎有了很好的答案。