文章目录

  • 前言
  • 分析
  • 代码

前言

笔者有需求,需要获取当前的默认浏览器的路径。网上的其他方法笔者没有去试。这里笔者采用的方式在win10 下是可行的,win7、winXp 没有测试。笔者使用 QQ电脑管家—>工具箱—>上网—>浏览器保护 进行默认浏览器设置 是不成功的。所以还是到 Win10 设置—>默认应用—>Web浏览器 进行设置是可行。

分析

笔者这里那 QQ浏览器和Chrome浏览器 进行测试。

打开http或者https网站链接时的默认浏览器是在下面的注册表项中进行关联的

计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http
计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https

一般切换默认浏览器后这2个都是一样的,当然你也可以手动改成不一样的。

具体默认浏览器的设置是在计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice 项下的ProgId键对应的值中。

ProgId是个啥呢?全称应该为program identifier程序名称信息。

QQBrowser默认是安装当前机器下的,所以它的ProgId在HKEY_LOCAL_MACHINE
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\QQBrowser.Protocol

Chrome默认是安装在当前用户下的,所以它的ProgId在HKEY_CURRENT_USER
计算机\HKEY_CURRENT_USER\Software\Classes\ChromeHTML.WVRE7ETNMLLK7SQAQPVF6OOAKA

所以我们通过注册表信息能得到当前默认浏览器的全路径。

代码

代码很简单,就是注册表的读取,代码笔者使用的MFC那一套。

CString CUtility::GetDefaultBrowser()
{// 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\httpCString browserPath = _T("");CString browserCmd = _T("");CRegKey reg;if (reg.Open(HKEY_CURRENT_USER,_T("Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice"),KEY_READ) == ERROR_SUCCESS){TCHAR szValue[512] = { 0 };DWORD dwSize = 512;if (reg.QueryStringValue(_T("ProgId"),szValue,&dwSize) == ERROR_SUCCESS){// 计算机\HKEY_LOCAL_MACHINE\Software\Classes\ 或者 计算机\HKEY_CURRENT_USER\Software\Classes\ 下CString ProgId = szValue;browserCmd.Format(_T("SOFTWARE\\Classes\\%s\\shell\\open\\command"),ProgId);reg.Close();TCHAR szValue2[512] = { 0 };DWORD dwSize2 = 512;if(reg.Open(HKEY_LOCAL_MACHINE,browserCmd,KEY_READ) == ERROR_SUCCESS){if (reg.QueryStringValue(_T(""),szValue2,&dwSize2) == ERROR_SUCCESS){browserCmd = szValue2;}}else if( reg.Open(HKEY_CURRENT_USER,browserCmd,KEY_READ) == ERROR_SUCCESS ){if (reg.QueryStringValue(_T(""),szValue2,&dwSize2) == ERROR_SUCCESS){browserCmd = szValue2;}}}}if(!browserCmd.IsEmpty()){int index = browserCmd.ReverseFind(L'.');browserPath = browserCmd.Mid(1,index+3);}return browserPath;
}

Windows编程—获取操作系统默认浏览器路径相关推荐

  1. Windows编程—获取Chrome浏览器的安装目录

    文章目录 前言 方式一 说明 代码 方式二 说明 代码 前言 在Windows平台开发时,有时候需要唤起Chrome浏览器访问指定url, 这时就需要知道Chrome浏览器的安装路径了.笔者这里总结了 ...

  2. [Windows编程] 获取系统CPU 个数

    随着多核CPU的普及, 程序中有必要考虑利用多核的优势来提高性能. 比如当创建线程池或者进程池的时候,可以根据系统CPU的个数来设定线程池/进程池的大小. 以下代码示例如何获取CPU的个数. view ...

  3. windows和linux主机名,windows和linux下如何远程获取操作系统版本和主机名

    远程获取windows和linux操作系统版本和主机名需要具备以下条件: 假设 主机A(windows 7),ip:192.168.12.2 主机B(centos 6.3),ip:192.168.12 ...

  4. 《工具癖》Mac与Windows获取文件绝对路径的快捷键

    对于开发者而言, 快速获取文件的绝对路径,是一件很提升效率的事情, 一般的做法是,右键... 其实是有快捷键的! Mac获取文件绝对路径 mac的快捷键为: command+option+c Wind ...

  5. Windows编程—杀死指定路径程序文件的进程

    前言 由于Windows命令 taskkill 无法通过程序文件的完整路径匹配来杀死指定进程,通过程序名称容易误杀进程,所有笔者做了一个简单的封装做了个mytaskkill.exe,用来杀死指定路径的 ...

  6. Windows与Mac获取文件绝对路径的快捷键

    文章目录 Windows获取文件绝对路径 Mac获取文件绝对路径 欢迎关注我的 微信公众号:破壳Ai,分享最佳学习路径.教程和资源.成长路上,有我陪你. 对于开发者而言,快速获取文件的绝对路径是一件很 ...

  7. c# 获取操作系统路径汇总

    string dir =Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)://获取系统桌面目录路径. stri ...

  8. Java编程中如何获取项目文件的路径/文件路径

    // 获取类加载器 ClassLoader cl = JDBCUtils.class.getClassLoader(); // 获取文件的统一资源定位器对象 URL url = cl.getResou ...

  9. 【Windows编程】windows窗口创建过程详解

    文章目录 前言 1 应用程序的分类 2 应用程序分类的对比 3 编译工具 4 windows库文件和头文件 5 WinMain函数和MessageBox函数初始 6 窗口类 7 窗口类的分类 8 注册 ...

最新文章

  1. matlab julian day,通用的日期格式与儒略日(julian day)格式的互相转换
  2. 阿里发布2019十大科技趋势:AI依然最热
  3. Filecoin: 影响力容错(PFT)和预期共识(EC)
  4. atan java_Java atan() 方法
  5. 中国基因工程行业市场供需与战略研究报告
  6. Sun 解决方案大会归来
  7. 化学人学python有前途吗-Java之父点赞的开源Java深度学习框架,你不学下吗?
  8. CMPP3.0实现物联网卡通讯
  9. 人工智能——前言概述
  10. 和利时dcs系统服务器设置,和利时DCS系统常见问题分析
  11. PTES渗透测试执行标准
  12. 【数据挖掘】使用R语言进行聚类分析
  13. 使用RMAN备份时应如何处置归档日志文件
  14. 密西根州立大学副教授汤继良:我的人生总有神奇的GPS
  15. 两台win10电脑连接同一个wifi怎么共享文件
  16. 6.3.1 延迟操作接口
  17. 什么是大数据?大数据的特征有哪些?
  18. 网络计划法中的最早时间和最迟时间以及关键事件。
  19. HIve窗口函数之CUME_DIST,PERCENT_RANK
  20. 更轻量的百度百舸,CCE Stack智算版发布

热门文章

  1. 为啥我的Python这么慢 - 项查找 (二)
  2. 基础省选+NOI-第2部分 数据结构进阶(II)
  3. 小学奥数 7828 最大公约数与最小公倍数 python
  4. 项目管理中网络图的看法和相关参数阅读说明
  5. mysql c 调用存储过程返回值_Mysql:使用返回值调用存储过程
  6. dedecms 标签使用集锦
  7. linux中dpkg找不到命令_工作中常用的Linux命令介绍与实践
  8. Android逆向笔记-Unity3D逆向一般思路(静态分析)
  9. Python工作笔记-统计文件夹内只有1个文件的文件夹
  10. Qt|OpenGL对obj文件的认识以及如何去解析(opengl+qt构造地球模型)