如何获取并设置自己的浏览器为默认浏览器

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

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

 

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

而默认浏览器的名称保存在HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Application的默认值里面。

基本上我们修改这两个键值就可以实现默认浏览器的设置了。

在上面的默认浏览器界面中,我封装了一些方法,现发布出来,希望对大家有用处。

ExpandedBlockStart.gif 代码
         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为默认浏览器功能。下面是该类的代码。

ExpandedBlockStart.gif 代码
         ///   <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);

该方法的详细内容如下:

ExpandedBlockStart.gif 代码
         ///   <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   "" ;
        }

 

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值