Windows编程—获取操作系统默认浏览器路径
文章目录
- 前言
- 分析
- 代码
前言
笔者有需求,需要获取当前的默认浏览器的路径。网上的其他方法笔者没有去试。这里笔者采用的方式在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编程—获取操作系统默认浏览器路径相关推荐
- Windows编程—获取Chrome浏览器的安装目录
文章目录 前言 方式一 说明 代码 方式二 说明 代码 前言 在Windows平台开发时,有时候需要唤起Chrome浏览器访问指定url, 这时就需要知道Chrome浏览器的安装路径了.笔者这里总结了 ...
- [Windows编程] 获取系统CPU 个数
随着多核CPU的普及, 程序中有必要考虑利用多核的优势来提高性能. 比如当创建线程池或者进程池的时候,可以根据系统CPU的个数来设定线程池/进程池的大小. 以下代码示例如何获取CPU的个数. view ...
- windows和linux主机名,windows和linux下如何远程获取操作系统版本和主机名
远程获取windows和linux操作系统版本和主机名需要具备以下条件: 假设 主机A(windows 7),ip:192.168.12.2 主机B(centos 6.3),ip:192.168.12 ...
- 《工具癖》Mac与Windows获取文件绝对路径的快捷键
对于开发者而言, 快速获取文件的绝对路径,是一件很提升效率的事情, 一般的做法是,右键... 其实是有快捷键的! Mac获取文件绝对路径 mac的快捷键为: command+option+c Wind ...
- Windows编程—杀死指定路径程序文件的进程
前言 由于Windows命令 taskkill 无法通过程序文件的完整路径匹配来杀死指定进程,通过程序名称容易误杀进程,所有笔者做了一个简单的封装做了个mytaskkill.exe,用来杀死指定路径的 ...
- Windows与Mac获取文件绝对路径的快捷键
文章目录 Windows获取文件绝对路径 Mac获取文件绝对路径 欢迎关注我的 微信公众号:破壳Ai,分享最佳学习路径.教程和资源.成长路上,有我陪你. 对于开发者而言,快速获取文件的绝对路径是一件很 ...
- c# 获取操作系统路径汇总
string dir =Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)://获取系统桌面目录路径. stri ...
- Java编程中如何获取项目文件的路径/文件路径
// 获取类加载器 ClassLoader cl = JDBCUtils.class.getClassLoader(); // 获取文件的统一资源定位器对象 URL url = cl.getResou ...
- 【Windows编程】windows窗口创建过程详解
文章目录 前言 1 应用程序的分类 2 应用程序分类的对比 3 编译工具 4 windows库文件和头文件 5 WinMain函数和MessageBox函数初始 6 窗口类 7 窗口类的分类 8 注册 ...
最新文章
- matlab julian day,通用的日期格式与儒略日(julian day)格式的互相转换
- 阿里发布2019十大科技趋势:AI依然最热
- Filecoin: 影响力容错(PFT)和预期共识(EC)
- atan java_Java atan() 方法
- 中国基因工程行业市场供需与战略研究报告
- Sun 解决方案大会归来
- 化学人学python有前途吗-Java之父点赞的开源Java深度学习框架,你不学下吗?
- CMPP3.0实现物联网卡通讯
- 人工智能——前言概述
- 和利时dcs系统服务器设置,和利时DCS系统常见问题分析
- PTES渗透测试执行标准
- 【数据挖掘】使用R语言进行聚类分析
- 使用RMAN备份时应如何处置归档日志文件
- 密西根州立大学副教授汤继良:我的人生总有神奇的GPS
- 两台win10电脑连接同一个wifi怎么共享文件
- 6.3.1 延迟操作接口
- 什么是大数据?大数据的特征有哪些?
- 网络计划法中的最早时间和最迟时间以及关键事件。
- HIve窗口函数之CUME_DIST,PERCENT_RANK
- 更轻量的百度百舸,CCE Stack智算版发布
热门文章
- 为啥我的Python这么慢 - 项查找 (二)
- 基础省选+NOI-第2部分 数据结构进阶(II)
- 小学奥数 7828 最大公约数与最小公倍数 python
- 项目管理中网络图的看法和相关参数阅读说明
- mysql c 调用存储过程返回值_Mysql:使用返回值调用存储过程
- dedecms 标签使用集锦
- linux中dpkg找不到命令_工作中常用的Linux命令介绍与实践
- Android逆向笔记-Unity3D逆向一般思路(静态分析)
- Python工作笔记-统计文件夹内只有1个文件的文件夹
- Qt|OpenGL对obj文件的认识以及如何去解析(opengl+qt构造地球模型)