/// <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; } )); }
/// <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)) )); }
public static Browser GetDefaultBrowser(Enums.eFileType fileType) { var browsers = GetInstalledBrowsers(); return(GetDefaultBrowser(browsers, fileType)); }