Registry File Association : Registry « Development Class « C# / C Sharp

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


Related examples in the same category

2.Write a Text and DWord Value to the Registry
3.Enumerating Registry Keys
4.Retrieve the CPU Type and Speed from the Registry
5.Use GetValue and SetValue to get and save value to Registry
6.Get the Registry key found for CurrentUser
7. Accessing the Registry
8.Open a SubKey in Registry
9.Get Registry value Get Registry value
10.Check Registry to see if it is installed
11.Get/Set User Registry
12.Copy Registry
13.Registry Utils
14.Retrieves any Registry value that uses the REGBINARY data type.
15.Writes a Registry value to the Registry.
16.Get IIS version