32 lines
1.4 KiB
C#
32 lines
1.4 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
using Microsoft.Win32;
|
|
|
|
namespace MECF.Framework.Common.Utilities
|
|
{
|
|
public class FileAssociation
|
|
{
|
|
[DllImport("shell32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
|
public static extern void SHChangeNotify(uint wEventId, uint uFlags, IntPtr dwItem1, IntPtr dwItem2);
|
|
|
|
public static void SetAssociation(string Extension, string KeyName, string OpenWith, string FileDescription)
|
|
{
|
|
RegistryKey registryKey = Registry.ClassesRoot.CreateSubKey(Extension);
|
|
registryKey.SetValue("", KeyName);
|
|
RegistryKey registryKey2 = Registry.ClassesRoot.CreateSubKey(KeyName);
|
|
registryKey2.SetValue("", FileDescription);
|
|
registryKey2.CreateSubKey("DefaultIcon").SetValue("", "\"" + OpenWith + "\",0");
|
|
RegistryKey registryKey3 = registryKey2.CreateSubKey("Shell");
|
|
registryKey3.CreateSubKey("edit").CreateSubKey("command").SetValue("", "\"" + OpenWith + "\" \"%1\"");
|
|
registryKey3.CreateSubKey("open").CreateSubKey("command").SetValue("", "\"" + OpenWith + "\" \"%1\"");
|
|
registryKey.Close();
|
|
registryKey2.Close();
|
|
registryKey3.Close();
|
|
RegistryKey registryKey4 = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\" + Extension, writable: true);
|
|
registryKey4.DeleteSubKey("UserChoice", throwOnMissingSubKey: false);
|
|
registryKey4.Close();
|
|
SHChangeNotify(134217728u, 0u, IntPtr.Zero, IntPtr.Zero);
|
|
}
|
|
}
|
|
}
|