| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Runtime.InteropServices;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- 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)
 
-         {
 
-             // The stuff that was above here is basically the same
 
-             RegistryKey BaseKey;
 
-             RegistryKey OpenMethod;
 
-             RegistryKey Shell;
 
-             RegistryKey CurrentUser;
 
-             BaseKey = Registry.ClassesRoot.CreateSubKey(Extension);
 
-             BaseKey.SetValue("", KeyName);
 
-             OpenMethod = Registry.ClassesRoot.CreateSubKey(KeyName);
 
-             OpenMethod.SetValue("", FileDescription);
 
-             OpenMethod.CreateSubKey("DefaultIcon").SetValue("", "\"" + OpenWith + "\",0");
 
-             Shell = OpenMethod.CreateSubKey("Shell");
 
-             Shell.CreateSubKey("edit").CreateSubKey("command").SetValue("", "\"" + OpenWith + "\"" + " \"%1\"");
 
-             Shell.CreateSubKey("open").CreateSubKey("command").SetValue("", "\"" + OpenWith + "\"" + " \"%1\"");
 
-             BaseKey.Close();
 
-             OpenMethod.Close();
 
-             Shell.Close();
 
-             // Delete the key instead of trying to change it
 
-             CurrentUser = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\" + Extension, true);
 
-             CurrentUser.DeleteSubKey("UserChoice", false);
 
-             CurrentUser.Close();
 
-             // Tell explorer the file association has been changed
 
-             SHChangeNotify(0x08000000, 0x0000, IntPtr.Zero, IntPtr.Zero);
 
-         }
 
-     }
 
- }
 
 
  |