Exemplo n.º 1
0
        /// <summary>Get the default browser for the specified file type (html, pdf, svg, ...)</summary>
        /// <param name="browsers">When you already called GetInstalledBrowsers(), pass it here.</param>
        /// <param name="fileType">The filetype you want to open</param>
        public static Browser GetDefaultBrowser(IEnumerable <Browser> browsers, Enums.eFileType fileType)
        {
            var ext         = Enum.GetName(typeof(Enums.eFileType), fileType).ToLower();
            var fileExtsKey = Registry.CurrentUser.OpenSubKey($@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts");
            var subkeyNames = fileExtsKey.GetSubKeyNames();

            if (!subkeyNames.Contains($@".{ext}"))
            {
                throw new Exception("The specified filetype is not present in the registry");
            }

            var fileTypeKey = fileExtsKey.OpenSubKey($@".{ext}\UserChoice");
            var progId      = fileTypeKey.GetValue("ProgId");

            return(browsers.FirstOrDefault(
                       b =>
            {
                // Don't compare key AND value. Just check if the value exists in the list.
                var res = b.FileAssociations.Any(v => v.Value.Equals(progId));

                //var res = b.FileAssociations.Any(
                //     //fa => ((fa.Key == $".{ext}") & (Equals(fa.Value, progId)))
                //     fa => (Equals(fa[$".{ext}"], progId)))
                // );
                return res;
            }
                       ));
        }
Exemplo n.º 2
0
        /// <summary>Get the default browser for the specified file type (html, pdf, svg, ...)</summary>
        /// <param name="browsers">When you already called GetInstalledBrowsers(), pass it here.</param>
        /// <param name="fileType">The filetype you want to open</param>
        public static Browser GetDefaultBrowser(IEnumerable <Browser> browsers, Enums.eFileType fileType)
        {
            var ext         = Enum.GetName(typeof(Enums.eFileType), fileType)?.ToLower(CultureInfo.InvariantCulture);
            var fileExtsKey = Registry.CurrentUser.OpenSubKey($@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts");

            if (fileExtsKey == null || !fileExtsKey.GetSubKeyNames().Contains($@".{ext}"))
            {
                throw new BrowserException("The specified filetype is not present in the registry");
            }

            var fileTypeKey = fileExtsKey.OpenSubKey($@".{ext}\UserChoice");

            if (fileTypeKey == null)
            {
                throw new BrowserException("The specified filetype is not present in the registry");
            }
            var progId = fileTypeKey.GetValue("ProgId");

            return(browsers.FirstOrDefault(
                       // Don't compare key AND value. Just check if the value exists in the list.
                       b => b.FileAssociations.Any(v => v.Value.Equals(progId))
                       ));
        }
Exemplo n.º 3
0
        public static Browser GetDefaultBrowser(Enums.eFileType fileType)
        {
            var browsers = GetInstalledBrowsers();

            return(GetDefaultBrowser(browsers, fileType));
        }