问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

windows重启后或注销重新登录后explorer自动重置默认应用的原因分析

创作时间:
作者:
@小白创作中心

windows重启后或注销重新登录后explorer自动重置默认应用的原因分析

引用
1
来源
1.
http://www.bilibili.com/read/cv34424474/

在Windows系统中,用户经常会遇到设置默认应用后,重启或注销重新登录时explorer.exe自动重置默认应用的问题。本文将详细分析这一现象的原因,并提供具体的解决方案。

昨天某位网友又遇到之前的问题:改了默认浏览器或默认pdf软件后,重启电脑后,资源管理器explorer.exe自动重置回系统默认的打开方式。
上一次我是重建了用户配置文件ntuser.dat解决的。但问题这么频发的话老重建也不是解决办法。

已知文件关联注册表有:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts.XXX\UserChoice
HKEY_CURRENT_USER\SOFTWARE\Classes.XXX
HKEY_LOCAL_MACHINE\SOFTWARE\Classes.XXX

优先级从上到下依次降低。设置默认应用改的是第一个注册表右侧的Progid和Hash(好像是win10开始才有hash这项)。

用火绒自定义规则第一条注册表路径创建修改询问,发现是explorer.exe修改的,可以用规则阻止创建,但是阻止不了删除。排查了很久,最后在事件查看器日志Microsoft-Windows-Shell-Core/AppDefaults里找到原因:

事件id 62440的日志:
检测到的哈希代码不匹配https. ProgId: MSEdgeHTM. UserSid: S-1-5-21-3550746935-1558288452-1655126001-1002. HashInRegistry: 16HC7/VH+uk=. ComputedHash: BPO/7gBQ3x4=. Date: 2024 : 5: 5 : 10 : 10 : 43

日志里告知了重置默认应用的原因,userchoice右侧ProgId对应的hash值不正确。就算不改默认应用,清除日志后注销重新登录也会出现62440日志,而正常系统是没有这个id的日志。

hash值是由ProgId字符串和userchoice注册表最后写入日期、xxx文件类型等信息生成的。用regworkshop查看userchoice属性,发现写入日期在注销重启后有变化(explorer.exe改名阻止重置后观察得知),导致了hash无效。注销后在新管理员账户里加载用户注册表,查看userchoice最后写入日期没有变化,说明日期是登录过程中修改的。

于是用procmon打开开机日志,看是谁修改userchoice注册表。

然后就看到了:

是User Profile Service服务在登录时改了文件关联注册表的权限,导致最后写入日期变化、hash失效。然而正常系统的日志里User Profile Service不会改注册表项权限。对比两者日志,发现端倪:

从HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings注册表项开始有出入,然后看这项权限,发现少了ALL APPLICATION PACKAGES权限。

刚好我之前写过的工具fixautocfgurl有重置这项权限的功能,管理员身份运行这个工具后,注销重新登录62440日志没有了,文件关联自动重置的问题也解决了!!!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号