public class BrowserHelper { /// <summary> /// 調用系統瀏覽器打開網頁 /// </summary> /// <param name="url">打開網頁的鏈接</param> public static void OpenBrowserUrl(string url) { try { // 64位注冊表路徑 var openKey = @"SOFTWARE\Wow6432Node\Google\Chrome"; if (IntPtr.Size == 4) { // 32位注冊表路徑 openKey = @"SOFTWARE\Google\Chrome"; } RegistryKey appPath = Registry.LocalMachine.OpenSubKey(openKey); // 谷歌瀏覽器就用谷歌打開,沒找到就用系統默認的瀏覽器 // 谷歌卸載了,注冊表還沒有清空,程序會返回一個"系統找不到指定的文件。"的bug if (appPath != null) { var result = Process.Start("chrome.exe", url); if (result == null) { OpenIe(url); } } else { var result = Process.Start("chrome.exe", url); if (result == null) { OpenDefaultBrowserUrl(url); } } } catch { // 出錯調用用戶默認設置的瀏覽器,還不行就調用IE OpenDefaultBrowserUrl(url); } } /// <summary> /// 用IE打開瀏覽器 /// </summary> /// <param name="url"></param> public static void OpenIe(string url) { try { Process.Start("iexplore.exe", url); } catch (Exception ex) { // IE瀏覽器路徑安裝:C:\Program Files\Internet Explorer // at System.Diagnostics.process.StartWithshellExecuteEx(ProcessStartInfo startInfo)注意這個錯誤 try { if (File.Exists(@"C:\Program Files\Internet Explorer\iexplore.exe")) { ProcessStartInfo processStartInfo = new ProcessStartInfo { FileName = @"C:\Program Files\Internet Explorer\iexplore.exe", Arguments = url, UseShellExecute = false, CreateNoWindow = true }; Process.Start(processStartInfo); } else { if (File.Exists(@"C:\Program Files (x86)\Internet Explorer\iexplore.exe")) { ProcessStartInfo processStartInfo = new ProcessStartInfo { FileName = @"C:\Program Files (x86)\Internet Explorer\iexplore.exe", Arguments = url, UseShellExecute = false, CreateNoWindow = true }; Process.Start(processStartInfo); } else { if (MessageBox.Show(@"系統未安裝IE瀏覽器,是否下載安裝?", null, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) { // 打開下載鏈接,從微軟官網下載 OpenDefaultBrowserUrl("http://windows.microsoft.com/zh-cn/internet-explorer/download-ie"); } } } } catch (Exception exception) { //MessageBox.Show(exception.Message); } } } /// <summary> /// 打開系統默認瀏覽器(用戶自己設置了默認瀏覽器) /// </summary> /// <param name="url"></param> public static void OpenDefaultBrowserUrl(string url) { try { // 方法1 //從注冊表中讀取默認瀏覽器可執行文件路徑 RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"http\shell\open\command\"); if (key != null) { string s = key.GetValue("").ToString(); //s就是你的默認瀏覽器,不過后面帶了參數,把它截去,不過需要注意的是:不同的瀏覽器后面的參數不一樣! //"D:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -- "%1" var lastIndex = s.IndexOf(".exe", StringComparison.Ordinal); if (lastIndex == -1) { lastIndex = s.IndexOf(".EXE", StringComparison.Ordinal); } var path = s.Substring(1, lastIndex + 3); var result = Process.Start(path, url); if (result == null) { // 方法2 // 調用系統默認的瀏覽器 var result1 = Process.Start("explorer.exe", url); if (result1 == null) { // 方法3 Process.Start(url); } } } else { // 方法2 // 調用系統默認的瀏覽器 var result1 = Process.Start("explorer.exe", url); if (result1 == null) { // 方法3 Process.Start(url); } } } catch { OpenIe(url); } } /// <summary> /// 火狐瀏覽器打開網頁 /// </summary> /// <param name="url"></param> public static void OpenFireFox(string url) { try { // 64位注冊表路徑 var openKey = @"SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox"; if (IntPtr.Size == 4) { // 32位注冊表路徑 openKey = @"SOFTWARE\Mozilla\Mozilla Firefox"; } RegistryKey appPath = Registry.LocalMachine.OpenSubKey(openKey); if (appPath != null) { var result = Process.Start("firefox.exe", url); if (result == null) { OpenIe(url); } } else { var result = Process.Start("firefox.exe", url); if (result == null) { OpenDefaultBrowserUrl(url); } } } catch { OpenDefaultBrowserUrl(url); } } }