如何更改文件扩展名的默认图标?

时间:2014-02-04 08:57:47

标签: c# .net wpf file icons

我想将某种类型的文件图标更改为新图标。所以我添加了这个片段:

AF_FileAssociator assoc = new AF_FileAssociator(".akp");
       string icon = assoc.DefaultIcon.IconPath;
       ProgramIcon newDefIcon = new ProgramIcon(@"ake.ico");
       assoc.DefaultIcon = newDefIcon;

请参阅here

即使我像这样放置图标的绝对路径:

ProgramIcon newDefIcon = new ProgramIcon(@"D:\ake.ico");

我得到了相同的结果。

我的项目根目录中有ake.ico图标。当我启动程序时,字符串icon的值为ake.ico

问题是扩展名为.akp的文件仍然没有图标。

  • 这个问题的原因是什么?
  • 我该如何解决?

2 个答案:

答案 0 :(得分:2)

以这种方式设置与可执行文件的文件关联......

在主类

中添加这些代码行
[System.Runtime.InteropServices.DllImport("shell32.dll")]

public static void SHChangeNotify(int wEventId, int uFlags, int dwItem1, int dwItem2)
{
}

然后在表单加载事件中添加此代码

My.Computer.Registry.ClassesRoot.CreateSubKey(".glx").SetValue("", "Galaxy Database", Microsoft.Win32.RegistryValueKind.String);
My.Computer.Registry.ClassesRoot.CreateSubKey("Galaxy Database\\shell\\open\\command").SetValue("", Application.ExecutablePath + " \"%l\" ", Microsoft.Win32.RegistryValueKind.String);
const dynamic SHCNE_ASSOCCHANGED = 0x8000000;
const dynamic SHCNF_IDLIST = 0;
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);

构建项目并以Administartor身份运行exe。 exe的图标将应用于.apk文件。

备注:它需要管理权限才能更改某些文件关联。注释代码并重建以禁用该功能。仍然会与你的exe保持联系。双击* .apk文件将使用您的exe打开它。

答案 1 :(得分:0)

我找到了一个解决方案:我将图标路径值设置为等于可执行应用程序的路径。它的作品