在.net里面,有一个WebBrowser控件,这个控件可以用于很多用途,很多人用来定做自己的浏览器,本文谈谈如何获取默认浏览器的设置,并介绍如何设置自己的浏览器为默认浏览器的小技巧。

先看一个小的界面图形,用来更好理解这个功能的用途,如下图我们可以看到需要获取到系统的默认浏览器名称,并提供设置默认浏览器功能。

默认 StorageClass nfs 默认浏览器怎么设置_正则表达式

 

其实,这些操作都是和注册表相关的内容,这些内容保存在键HKEY_CLASSES_ROOT\http\shell\open\command中的默认值里面,

默认 StorageClass nfs 默认浏览器怎么设置_默认值_02

而默认浏览器的名称保存在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);

该方法的详细内容如下:

默认 StorageClass nfs 默认浏览器怎么设置_默认浏览器_03

代码

        

///           <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           "" 
    ;
        }

 

 

以上是一点关于设置默认浏览器的小技巧,留底,供娱乐,搏一声好,足矣!