无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 7286|回复: 9
打印 上一主题 下一主题

[教程] 关于修改默认浏览器的一些思路

  [复制链接]
跳转到指定楼层
1#
发表于 2019-1-22 23:36:51 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
在win7及更早的版本下,我们可以很容易地通过修改注册表来达到修改默认浏览器的目的。然而在win8以上版本,尤其是在win10中,想要修改这些项目就必须依靠systemsetting即系统中的设置来实现,主要原因是在设置过程中还附加设置了一项hash值,使得不匹配的浏览器无法启动。当然,使用自带的设置来完成这些操作是最为快捷的办法,然而要实现自动部署,比如在PE下实现相应的操作就得另辟蹊径。




下面以Chrome为例,给出解决此问题的一些思路:

一、方法一
适用于win8,win8.1(可能包含一些win10早期版本),不仅可以修改默认浏览器,还能指定一些特定后缀文件的默认打开方式。
调用shell32.dll中的SetAppAsDefault函数,具体见https://docs.microsoft.com/en-us/windows/desktop/api/shobjidl_core/nf-shobjidl_core-iapplicationassociationregistration-setappasdefault

这里简单介绍下它的用法。函数原型:
  1. HRESULT SetAppAsDefault(
  2.   LPCWSTR         pszAppRegistryName,
  3.   LPCWSTR         pszSet,
  4.   ASSOCIATIONTYPE atSetType
  5. );
复制代码


参数pszAppRegistryName
指定应用程序的注册名称。更具体一点,它是HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications下字符串值得名称,与HKEY_CURRENT_USER\SOFTWARE\Classes\(your application name)\Application 下名为ApplicationName的字符串值对应的值相对应,例如Chrome项目的ApplicationName为Google Chrome



参数pszSet
指定应用程序的扩展名或协议。如:扩展名.html或.pdf 协议http或https

这里再简要介绍下设置默认浏览器中扩展名和协议的区别:
扩展名规定打开特定后缀文件所采取的默认行为(例如直接打开后缀为html的文件):


协议则规定在特定的应用中访问所采取的行为(例如在地址栏中直接访问一个网址):


参数atSetType
指定应用程序类型,具体见https://docs.microsoft.com/zh-cn/windows/desktop/api/shobjidl_core/ne-shobjidl_core-associationtype



这里,给出一个在pecmd里设置Chrome为默认浏览器的简单例子:


  1. CALL $shell32.dll,SetAppAsDefault,#Google Chrome,#http,#1
复制代码



类似地,你可以将其他后缀的文件类型关联起来。





二、方法二

根据dism来进行相应操作。

第一步:导出系统中的文件关联配置。
Dism.exe /Online /Export-DefaultAppAssociations:C:\AppAssoc.xml
注意,只能使用/Online选项在已经登录的系统中进行导出。
如果在导出过程中存在问题,你也可以用如下的模板文件,将其命名为*.xml.
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <DefaultAssociations>
  3.   <Association Identifier=".htm" ProgId="ChromeHTML" ApplicationName="Google Chrome" />
  4.   <Association Identifier=".html" ProgId="ChromeHTML" ApplicationName="Google Chrome" />
  5.   <Association Identifier=".pdf" ProgId="ChromeHTML" ApplicationName="Google Chrome" />
  6.   <Association Identifier="http" ProgId="ChromeHTML" ApplicationName="Google Chrome" />
  7.   <Association Identifier="https" ProgId="ChromeHTML" ApplicationName="Google Chrome" />
  8. </DefaultAssociations>
复制代码


结果一目了然,上面列举了一些设置为默认浏览器需要用到的选项,你也可以根据需要自行修改。
这里的ProgId对应HKEY_LOCAL_MACHINE\SOFTWARE\Classes\{ProgID},如Chrome:



第二步:导入修改后的文件关联配置。
Dism.exe /Image:C:\test\offline /Import-DefaultAppAssociations:C:\AppAssoc.xml


完成后,你可以查看文件关联是否正确:
Dism.exe /Image:C:\test\offline /Get-DefaultAppAssociations


在实际的操作过程中,发现似乎不提供ProgID以及相关信息,在dism完成相应的操作后再添加对应的注册表项目也可以正常获得文件关联。有待进一步验证。







三、方法三
使用SetUserFTASetDefaultBrowser
具体见http://kolbi.cz/blog/2017/11/10/setdefaultbrowser-set-the-default-browser-per-user-on-windows-10-and-server-2016-build-1607/
http://kolbi.cz/blog/2017/10/25/setuserfta-userchoice-hash-defeated-set-file-type-associations-per-user/
这两个链接。

下面简要介绍下使用方法

1.SetUserFTA

SetUserFTA /get 获取当前的关联信息


SetUserFTA extension progid 设置对应的关联,例如 SetUserFTA .html ChromeHTML



同样地,你可以以这种方式设置协议,例如SetUserFTA http ChromeHTML
然而,这在1607以及更高版本不适用,因此需要用到SetDefaultBrowser 工具.


2.SetDefaultBrowser

使用非常容易。直接运行即可列出当前安装的浏览器:




然后,根据列出的选项直接设置默认浏览器。例如 SetDefaultBrowser HKLM "Google Chrome"




需要注意的是,使用该工具前必须确保浏览器已经在注册表中正确注册。








评分

参与人数 4无忧币 +25 收起 理由
879792799 + 10 很给力的研究!!!
lhc0688 + 5
liangyi + 5 很给力!
holley2008 + 5 技术贴!

查看全部评分

10#
发表于 2019-11-30 04:21:00 | 只看该作者
SetDefaultBrowser HKLM "Google Chrome"
需要注意的是,使用该工具前必须确保浏览器已经在注册表中正确注册。

在Win10下所谓的正确注册过,就是手动在程序默认里面设置过才生效,晕!
回复

使用道具 举报

9#
发表于 2019-8-21 15:56:31 | 只看该作者
本帖最后由 令狐大虾 于 2019-8-21 21:13 编辑

SetDefaultBrowse 设置协议的命令木有列出来哈楼主,还有SetDefaultBrowse.exe到哪下载?
在帖子链接里面找到了
回复

使用道具 举报

8#
发表于 2019-1-23 14:53:33 | 只看该作者
技术贴,标记一下!!
回复

使用道具 举报

7#
发表于 2019-1-23 11:22:57 | 只看该作者
这个帖子得收藏了,win10的关联问题真的很让人困惑
回复

使用道具 举报

6#
发表于 2019-1-23 08:56:51 | 只看该作者
不错,技术贴,顶了
回复

使用道具 举报

5#
发表于 2019-1-23 08:16:56 | 只看该作者
真的小细节出大技术。
回复

使用道具 举报

4#
发表于 2019-1-23 02:30:51 | 只看该作者
win10中可以这样在注册表中设置默认浏览器:
1、开始→运行→输入regedit,打开注册表编辑器 2、找到HKEY_CLASSES_ROOT\http\shell\open\command,在右边的窗口中双击"默认",将要用浏览器的可执行文件的完全路径输入到这里,例如设置IE为默认浏览器:输入“C:\Program Files\Internet Explorer\iexplore.exe” 3、然后找到 HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Application,在右边的窗口中双击"默认",设置浏览器名,如果是Firefox则输入Firefox,如果是IE则输入IExplore。(小提示:切记不能写错名称,如果你不知道浏览器的标准名称是什么,只需要到安装目录下查看该浏览器的名称即可)
回复

使用道具 举报

3#
发表于 2019-1-23 00:06:03 | 只看该作者
技术活!学习了!
回复

使用道具 举报

2#
发表于 2019-1-22 23:41:53 | 只看该作者
好思路就有好出路
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-30 15:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表