示例#1
0
        private void ConfigureExtensionsList()
        {
            PreviewHandlerInfo handler = handlerComboBox.SelectedItem as PreviewHandlerInfo;

            if (handler != null)
            {
                UseWaitCursor             = true;
                _loading                  = true;
                handlerComboBox.Enabled   = false;
                extensionsListBox.Enabled = false;

                extensionsListBox.SuspendLayout();
                extensionsListBox.Items.Clear();
                foreach (ExtensionInfo info in _regData.Extensions)
                {
                    bool isChecked = info.Handler == handler;
                    if (isChecked || !showOnlyRegisteredCheckBox.Checked)
                    {
                        extensionsListBox.Items.Add(info, isChecked);
                    }
                }
                extensionsListBox.ResumeLayout();

                extensionsListBox.Enabled = true;
                handlerComboBox.Enabled   = true;
                _loading      = false;
                UseWaitCursor = false;
            }
        }
示例#2
0
 private static void RegisterHandlerForExtension(string extension, PreviewHandlerInfo handler)
 {
     using (RegistryKey extensionKey = Registry.ClassesRoot.CreateSubKey(extension))
         using (RegistryKey shellexKey = extensionKey.CreateSubKey("shellex"))
             using (RegistryKey previewKey = shellexKey.CreateSubKey("{8895b1c6-b41f-4c1c-a562-0d564250836f}"))
             {
                 previewKey.SetValue(null, handler.ID, RegistryValueKind.String);
             }
 }
        public ExtensionInfo(string extension)
        {
            var hId = Registry.GetValue($@"HKEY_CLASSES_ROOT\{extension}\shellex\{{8895b1c6-b41f-4c1c-a562-0d564250836f}}", null, null) as string;

            Handler = new PreviewHandlerInfo {
                ID   = hId,
                Name = Registry.LocalMachine.GetValue($@"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\PreviewHandlers\\{hId}") as string
            };
        }
示例#4
0
 private void extensionsListBox_ItemCheck(object sender, ItemCheckEventArgs e)
 {
     if (!_loading)
     {
         if (handlerComboBox.SelectedItem != null)
         {
             PreviewHandlerInfo handlerInfo   = handlerComboBox.SelectedItem as PreviewHandlerInfo;
             ExtensionInfo      extensionInfo = (ExtensionInfo)extensionsListBox.Items[e.Index];
             if (e.CurrentValue == CheckState.Unchecked)
             {
                 RegisterHandlerForExtension(extensionInfo.Extension, handlerInfo);
                 extensionInfo.Handler = handlerInfo;
             }
             else
             {
                 UnregisterHandlerForExtension(extensionInfo.Extension);
                 extensionInfo.Handler = null;
             }
         }
     }
 }
示例#5
0
        private RegistrationData LoadRegistrationInformation()
        {
            // Load and sort all preview handler information from registry
            List <PreviewHandlerInfo> handlers = new List <PreviewHandlerInfo>();

            using (RegistryKey handlersKey = Registry.LocalMachine.OpenSubKey(
                       "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\PreviewHandlers", true))
            {
                foreach (string id in handlersKey.GetValueNames())
                {
                    PreviewHandlerInfo handler = new PreviewHandlerInfo();
                    handler.ID   = id;
                    handler.Name = handlersKey.GetValue(id, null) as string;
                    handlers.Add(handler);
                }
            }
            handlers.Sort(delegate(PreviewHandlerInfo first, PreviewHandlerInfo second)
            {
                if (first.Name == null)
                {
                    return(1);
                }
                else if (second.Name == null)
                {
                    return(-1);
                }
                else
                {
                    return(first.Name.CompareTo(second.Name));
                }
            });

            // Create a lookup table of preview handler ID -> PreviewHandlerInfo
            Dictionary <string, PreviewHandlerInfo> handlerMapping = new Dictionary <string, PreviewHandlerInfo>(handlers.Count);

            foreach (PreviewHandlerInfo handler in handlers)
            {
                handlerMapping.Add(handler.ID, handler);
            }

            // Get all classes/extensions from registry
            string[] extensions = Registry.ClassesRoot.GetSubKeyNames();

            // Find out what each extension is registered to be previewed with
            List <ExtensionInfo> extensionInfos = new List <ExtensionInfo>(extensions.Length);

            foreach (string extension in extensions)
            {
                ExtensionInfo info = new ExtensionInfo();
                info.Extension = extension;

                string id = Registry.GetValue(
                    string.Format(@"HKEY_CLASSES_ROOT\{0}\shellex\{{8895b1c6-b41f-4c1c-a562-0d564250836f}}", extension),
                    null, null) as string;
                PreviewHandlerInfo mappedHandler;
                if (id != null && handlerMapping.TryGetValue(id, out mappedHandler))
                {
                    info.Handler = mappedHandler;
                }

                extensionInfos.Add(info);
            }

            // Return the information
            RegistrationData data = new RegistrationData();

            data.Handlers   = handlers;
            data.Extensions = extensionInfos;
            return(data);
        }