最近碰到一个 Edge 浏览器不工作的问题,Edge 打开后无法访问任何站点,一直报错:“这很奇怪...有些东西停止工作,所以这个页面无法加载。”,详细信息为:“无法创建内容处理,错误代码:0x8027025b”。这个问题是由于系统文件夹 C:\Windows\System32
缺少了所有受限制的应用程序包
的权限以及注册表:HKEY_LOCAL_MACHINE\Software
缺少了 S-1-15-3-1024-1065365936-1281604716-3511738428-1654721687-432734479-3232135806-4053264122-3456934681
权限所导致。这篇文章将讲述如何修复这两个特殊账户权限丢失的问题。
问题分析
从 Process Monitor 日志可以看到,多个 Edge 标签页进程(MicrosoftEdgeCP.exe)在启动后瞬间就结束运行了。
随便选择其中一个 MicrosoftEdgeCP.exe 来分析一下为什么会秒退。在日志中我们看到该进程在访问一些位于 C:\Windows\System32
下的 DLL 文件时遇到了"ACCESS DENIED"错误,然后就立刻结束了进程。
然后我们找来一台正常的机器与这台有问题的机器做对比,可以发现好的机器的 C:\Windows\System32\edgeIso.dll
有给 ALL RESTRICTED APPLICATION PACKAGES
(即:所有受限制的应用程序包
)权限,而出问题的机器上却没有这个账户的权限。
添加 ALL RESTRICTED APPLICATION PACKAGES (所有受限制的应用程序包)权限
ALL RESTRICTED APPLICATION PACKAGES
(所有受限制的应用程序包
)是一个特殊的系统账户,专门给 Windows 10 上的 UWP 应用使用,并且该账户无法从界面中手动添加。我们只能通过安全模板来添加相应的权限到 S-1-15-2-2(S-1-15-2-2 即为所有受限制的应用程序包
的 SID)。
打开 MMC,添加管理单元:安全模板。展开安全模板,右键点击 新加模板。
名字随便写什么,这里我就用
fix-edge
。展开 fix-edge,右键点击 文件系统,点击 添加文件,选择目录:C:\Windows\System32,弹出的安全设置中保持默认配置,直接点击 确定。在下一页添加对象中也是保持默认设置,点击 确定。
右键点击 fix-edge,点击 保存。
根据模板路径,打开该目录,会找到对应的配置文件:fix-edge.inf,双击在 notepad 中打开。
在 File Security 配置(最后一行)的引号内,添加黄色高亮部分配置:
(A;;0x1200a9;;;S-1-15-2-2)(A;OICI;0x1200a9;;;S-1-15-2-2)
,然后保存文件。在 MMC 中添加另一个管理单元:安全配置和分析。 右键点击它然后选择 打开数据库。
文件名输入 fix-edge,点击 打开, 导入模板中选择:fix-edge.inf。
再次右键点击 安全配置和分析,选择 立即配置计算机。
日志文件可以保持默认设置,点击 确定 即可,然后耐心等待其完成。
完成后我们可以看到 "ALL RESTRICTED APPLICATION PACKAGES"(所有受限制的应用程序包)的权限已经正确设上了。
修复 S-1-15-3-1024-1065365936-1281604716-3511738428-1654721687-432734479-3232135806-4053264122-3456934681 的注册表权限
修复系统文件的权限后,在我这里 Edge 仍旧无法打开。通过再次抓取 Process Monitor 日志,发现这次 Edge 进程访问C:\Windows\System32
下 DLL 文件不再有问题了,这次进程退出是发生在访问HKLM\Software
注册表失败后,失败的原因同样是"ACCESS DENIED"。
同样的,我们来对比一下好的机器和不好的机器上注册表HKLM\Software
的权限。我们发现坏的机器在HKLM\Software
上缺少了S-1-15-3-1024-1065365936-1281604716-3511738428-1654721687-432734479-3232135806-4053264122-3456934681
这个账户的权限,然而在其上层的HKLM
中,该账户的权限是有的。
所以我们只需要进入注册表HKLM\Software
的高级安全设置页面,然后点击 启用继承 按钮,点击 确定,即可使HKLM\Software
上的权限继承自HKLM
。耐心等待该操作完成,因为系统需要一些时间把权限下发到HKLM\Software
下所有的子目录。
修复了注册表权限之后,Edge 就可以正常打开是用了。