Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#:与文件扩展名关联的图标_C#_File - Fatal编程技术网

c#:与文件扩展名关联的图标

c#:与文件扩展名关联的图标,c#,file,C#,File,在我的应用程序中,我创建扩展名为.mprj的文件 如何将图标指定给此类型的文件 是否存在合适的.Net方法?您需要修改注册表项。 下面可以找到如何使用c#的代码片段: 我建议您使用InnoSetup来实现这一点。您可以将程序与扩展名关联以添加图标,并在用户单击具有此扩展名的文件时启动程序。(例如,直接在程序中打开文件,如msoffice程序)。单击Excel文件时,Excel正在启动并打开此文件。使用InnoSetup和main方法中的少量代码来解析参数,您可以轻松地完成同样的工作 使用Inno

在我的应用程序中,我创建扩展名为.mprj的文件

如何将图标指定给此类型的文件


是否存在合适的.Net方法?

您需要修改注册表项。 下面可以找到如何使用c#的代码片段:

我建议您使用InnoSetup来实现这一点。您可以将程序与扩展名关联以添加图标,并在用户单击具有此扩展名的文件时启动程序。(例如,直接在程序中打开文件,如msoffice程序)。单击Excel文件时,Excel正在启动并打开此文件。使用InnoSetup和main方法中的少量代码来解析参数,您可以轻松地完成同样的工作

使用Innosetup,您只需在[Setup]部分添加iI

ChangesAssociations=yes
以及在[注册处]一节中

Root: HKCR; Subkey: ".mpl"; ValueType: string; ValueName: ""; ValueData: "{#MyAppName}"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "{#MyAppName}"; ValueType: string; ValueName: ""; ValueData: "Program {#MyAppName}"; Flags: uninsdeletekey
Root: HKCR; Subkey: "{#AppName}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"
Root: HKCR; Subkey: "{#AppName}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}.EXE"" ""%1"""


中的更多信息将文件类型与您的程序相关联是否是一个可接受的解决方案?相关线程-这已在下面得到彻底回答。我们一直在使用这个实现,它工作得很好。它也是开源的,并集成到MSBuild中。下面的线程已经彻底回答了这一问题:请记住,在关闭或杀死任何
Explorer.exe
进程并重新启动它之前,指定的图标对于该扩展将不可见!重新启动Windows是另一个解决方案。