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

标签 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 的文件仍然没有 icon 。

  • 这个问题的原因是什么?
  • 我该如何修复它?

最佳答案

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

在主类中添加这些代码行

[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);

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

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

关于c# - 如何更改文件扩展名的默认图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21547858/

相关文章:

c# - 如何从 PopUp 窗口到达 ApplicationBar?

c# - 一个月最后一天的自定义验证器 - C#

.net - 用于安装 nuget 包的 PowerShell 脚本

c# - 比较两个集合值 c#

Visual Studio 2010 中的 WPF 设计 View ——滚动滚动条?

c# - XAML - 为什么数据绑定(bind) TwoWay 不适用于 .net 4.0 中组合框的文本属性?

c# - 通用类型转换失败

c# - 寻找组合来自不同程序集的部分类的模式

c# - 如何在ReactiveUI的ReactiveCommand中为canExecute分配功能?

C# 4.0 : Expression trees vs. CodeDom