Mega Code Archive

 
Categories / C# / Development Class
 

Registry File Association

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Win32; using System.Reflection; namespace SynoManager.Utils {     public static class FileAssociation     {         public static bool DoesFileAssociationExists(string extension)         {             RegistryKey classes = GetClasses();             RegistryKey extensionKey = classes.OpenSubKey(extension);             return (extensionKey != null);         }         /// <summary>         /// Create a new file association         /// </summary>         /// <param name="extension">Extension of the file type, including the seperator) (ie: ".torrent")</param>         /// <param name="key">File Type Key (can be referenced to create multiple extensions for one file type)</param>         /// <param name="description">Description for the file type</param>         /// <param name="path">Path (ie. '"C:\Executable.exe" "%1"')</param>         public static void CreateFileAssociation(string extension, string key, string description, string path)         {             RegistryKey classes = GetClasses();             RegistryKey extensionKey = classes.CreateSubKey(extension);             extensionKey.SetValue(null, key);             RegistryKey typeKey = classes.CreateSubKey(key);             typeKey.SetValue(null, description);             RegistryKey shellKey = typeKey.CreateSubKey("shell");             RegistryKey shellOpenKey = shellKey.CreateSubKey("open");             RegistryKey shellOpenCommandKey = shellOpenKey.CreateSubKey("command");             shellOpenCommandKey.SetValue(null, path);         }         private static RegistryKey GetClasses()         {             return Registry.ClassesRoot;             RegistryKey currentUser = Registry.CurrentUser;             RegistryKey software = currentUser.OpenSubKey("Software");             return software.OpenSubKey("Classes");         }         public static void AssociateTorrents()         {             string path = String.Format("\"{0}\" \"%1\"", Assembly.GetEntryAssembly().Location);             CreateFileAssociation(".torrent","TorrentFile", "BitTorrent Download File", path);         }         public static void AssociateNZB()         {             string path = String.Format("\"{0}\" \"%1\"", Assembly.GetEntryAssembly().Location);             CreateFileAssociation(".nzb", "NZBFile", "NZB Download File", path);         }     } }