程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 如何獲取並設置自己的浏覽器為默認浏覽器

如何獲取並設置自己的浏覽器為默認浏覽器

編輯:關於.NET

在.net裡面,有一個WebBrowser控件,這個控件可以用於很多用途,很多人用來定做自己的浏覽器,本文談談如何獲取默認浏覽器的設置,並介紹如何設置自己的浏覽器為默認浏覽器的小技巧。

先看一個小的界面圖形,用來更好理解這個功能的用途,如下圖我們可以看到需要獲取到系統的默認浏覽器名稱,並提供設置默認浏覽器功能。

其實,這些操作都是和注冊表相關的內容,這些內容保存在鍵HKEY_CLASSES_ROOT\http\shell\open\command中的默認值裡面,

而默認浏覽器的名稱保存在HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Application的默認值裡面。

基本上我們修改這兩個鍵值就可以實現默認浏覽器的設置了。

在上面的默認浏覽器界面中,我封裝了一些方法,現發布出來,希望對大家有用處。

private void FrmOptions_Load(object sender, EventArgs e)
         {
             InitDefaultBrowser();
         }
         private void InitDefaultBrowser()
         {
             string defaultName = RegistryHelper.GetDefaultBrowerName();
             try
             {
                 string browserPath = CRegex.GetText(defaultName, "\"(?<key>.*?)\"", 1);
                 FileInfo fileInfo = new FileInfo(browserPath);
                 string fileName = fileInfo.Name.Replace(fileInfo.Extension, "");
                 this.lblDefaultName.Text = fileName;
             }
             catch(Exception ex)
             {
                 LogHelper.Error(ex);
             }
         }
         private void btnSetDefault_Click(object sender, EventArgs e)
         {
             RegistryHelper.SetDefaultBrowser(Application.ExecutablePath);
             MessageUtil.ShowTips("設置默認浏覽器成功");
             InitDefaultBrowser();
         }
         private void btnReset_Click(object sender, EventArgs e)
         {
             RegistryHelper.ResetIEDefaultBrowser();
             MessageUtil.ShowTips("恢復IE為默認浏覽器成功");
             InitDefaultBrowser();
         }

其中我把注冊表的訪問,放到了一個獨立的注冊版訪問類中進行處理了,其中包含了3個部分,獲取默認浏覽器名稱,設置自己的浏覽器為默認浏覽器,恢復IE為默認浏覽器功能。下面是該類的代碼。

代碼

/// <summary>
         /// 獲取默認浏覽器的名稱
         /// </summary>
         /// <returns></returns>
         public static string GetDefaultBrowerName()
         {
             string mainKey = @"http\shell\open\command";
             string nameKey = @"http\shell\open\ddeexec\Application";
             string strRet = string.Empty;
             try
             {
                 RegistryKey regKey = Registry.ClassesRoot.OpenSubKey(mainKey);
                 strRet = regKey.GetValue("").ToString();
             }
             catch
             {
                 strRet = "";
             }
             return strRet;
         }
         /// <summary>
         /// 設置自定義浏覽器為默認浏覽器
         /// </summary>
         /// <param name="browserExePath"></param>
         /// <returns></returns>
         public static bool SetDefaultBrowser(string browserExePath)
         {
             string mainKey = @"http\shell\open\command";
             string nameKey = @"http\shell\open\ddeexec\Application";
             bool result = false;
             try
             {
                 string value = string.Format("\"{0}\" \"%1\"", browserExePath);
                 RegistryKey regKey = Registry.ClassesRoot.OpenSubKey(mainKey, true);
                 regKey.SetValue("", value);
                 regKey.Close();
                 FileInfo fileInfo = new FileInfo(browserExePath);
                 string fileName = fileInfo.Name.Replace(fileInfo.Extension, "");
                 regKey = Registry.ClassesRoot.OpenSubKey(nameKey, true);
                 regKey.SetValue("", fileName);
                 regKey.Close();
                 result = true;
             }
             catch(Exception ex)
             {
                 LogHelper.Error(ex);
             }
             return result;
         }
         /// <summary>
         /// 恢復IE為默認浏覽器
         /// </summary>
         /// <returns></returns>
         public static bool ResetIEDefaultBrowser()
         {
             string mainKey = @"http\shell\open\command";
             string nameKey = @"http\shell\open\ddeexec\Application";
             string IEPath = @"C:\Program Files\Internet Explorer\iexplore.exe";
             bool result = false;
             try
             {
                 string value = string.Format("\"{0}\" -- \"%1\"", IEPath);
                 RegistryKey regKey = Registry.ClassesRoot.OpenSubKey(mainKey, true);
                 regKey.SetValue("", value);
                 regKey.Close();
                 regKey = Registry.ClassesRoot.OpenSubKey(nameKey, true);
                 regKey.SetValue("", "IExplore");
                 regKey.Close();

                 result = true;
             }
             catch
             {
             }
             return result;
         }

另外代碼中,為了獲取到默認的浏覽器文件名稱,我通過正則表達式來獲取內容,

我們看到,那個默認值是:"E:\Program Files\Maxthon2\Maxthon.exe" "%1"

為了獲得第一部分的內容,我通過正則表達式匹配方式來獲取,如代碼

string browserPath = CRegex.GetText(defaultName, "\"(?<key>.*?)\"", 1);

該方法的詳細內容如下:

/// <summary>
         /// 單個匹配內容
         /// </summary>
         /// <param name="sInput">輸入內容</param>
         /// <param name="sRegex">表達式字符串</param>
         /// <param name="iGroupIndex">分組序號, 從1開始, 0不分組</param>
         public static string GetText(string sInput, string sRegex, int iGroupIndex)
         {
             Regex re = new Regex(sRegex, RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline);
             Match mc = re.Match(sInput);
             if (mc.Success)
             {
                 if (iGroupIndex > 0)
                     return mc.Groups[iGroupIndex].Value;
                 else
                     return mc.Value;
             }
             else
                 return "";
         }

以上是一點關於設置默認浏覽器的小技巧,留底,供娛樂,搏一聲好,足矣!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved