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

时间:2009-07-30 00:06:02

标签: c# .net icons file-type

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

一切正常,除了烦人的图标看起来像我的应用程序的图标。我想为应用程序提供一个图标,为文档提供一个图标。

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

我尝试过但没有成功:

  1. 选择“嵌入资源”为 文件的构建操作。
  2. 将图标添加到资源文件。
  3. 唯一有效的方法是将图标文件与可执行文件分开并指向它。然而,在我看来,这似乎是投降。

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

4 个答案:

答案 0 :(得分:4)

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

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

  1. 在Visual Studio中打开.exe文件(文件 - >打开文件)
  2. 右键单击图标文件夹,然后选择添加资源
  3. 点击导入
  4. 按钮
  5. 选择.ico文件
  6. 您可能不得不弄乱图标编号,我认为最低编号(示例101)将是应用程序的图标
  7. 记住新图标编号并将其设置为索引
  8. 编辑2: 试试这篇文章:http://www.codeproject.com/KB/dotnet/embedmultipleiconsdotnet.aspx

答案 1 :(得分:1)

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

这是我的魔法Wix咒语:     

    <!-- Your executable -->
    <File 
        Id="MaAppExe" 
        Name="MyApp.exe" 
        Source="MyApp.exe" KeyPath="yes" >
    </File>

    <!-- your document icon -->
    <File 
        Id='IconMyAppDoc.ico' 
        Name='IconMyAppDoc.ico' 
        Source='$(var.MyApp.ProjectDir)\Resources\Images\Icons\docicon.ico' />

    <-- File Extension and associated document icon -->
    <ProgId 
        Id='MyApp.MyAppExtension' 
        Description='My App Data File' 
        Icon='IconMyAppDoc.ico'>
        <Extension 
            Id='MyApp' 
            ContentType='text/plain'>
            <Verb 
                Id='open' 
                Command='Open' 
                TargetFile="MyAppExe" 
                Argument='"%1"' />
         </Extension>
    </ProgId>
</Component>

答案 2 :(得分:0)

DefaultIcon也会接受一个有效.ico文件的路径作为图标。

答案 3 :(得分:0)

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

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

- 编辑 -
编辑完他的帖子后,ZippyV似乎有了很好的答案。