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编程—获取操作系统默认浏览器路径的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编学习的安装DOSBOX及debug.
- 下一篇: java信息管理系统总结_java实现科