我想将一种文件类型的图标更改为新图标。所以我添加这个片段:
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/