zoukankan      html  css  js  c++  java
  • 如何获取并设置自己的浏览器为默认浏览器

    在.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 "";
            }

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

    主要研究技术:代码生成工具、会员管理系统、客户关系管理软件、病人资料管理软件、Visio二次开发、酒店管理系统、仓库管理系统等共享软件开发
    专注于Winform开发框架/混合式开发框架Web开发框架Bootstrap开发框架微信门户开发框架的研究及应用
      转载请注明出处:
    撰写人:伍华聪  http://www.iqidi.com 
        
  • 相关阅读:
    mysql 创建数据库的基本操作
    MySQL的数据类型 及注意事项
    在执行 pip install 时遇到错误:python setup.py egg_info Check the logs for full command output
    python3.8-运行jupyter 报raise NotImplementedError
    执行python 爬虫脚本时提示bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
    Python:lambda表达式和yield关键字理解与使用讲解
    百度paddle框架学习(二):使用经典VGG网络完成人脸口罩判别
    深度学习中的梯度
    C++ OpenCV学习笔记(持续更新)
    Tensorflow常见报错
  • 原文地址:https://www.cnblogs.com/wuhuacong/p/1647681.html
Copyright © 2011-2022 走看看