启用App Container的Chromium沙箱进程初始化时访问拒绝错误
问题分析与解决方案
核心问题总结
Windows Server 2019 Datacenter(版本10.0.17763)环境下,通过Chromium沙箱的broker进程启用App Container启动子进程时,触发0xc0000022访问拒绝错误,进程在依赖加载阶段(main函数执行前)失败;Windows 11下流程正常,且直接使用专用App Container启动器(无broker、无替代桌面、低权限令牌)启动目标进程可正常运行。关键异常点:同一构建目录下base.dll可正常加载并执行QueryFileMapping、QueryNameInformationFile等操作,但libc++.dll加载流程异常。日志中的800700B7错误仅表示App Container已存在,与核心问题无关。
排查与修复步骤
1. 对比Broker与专用启动器的令牌权限差异
- 检查broker生成的App Container令牌是否额外包含受限SID或强制完整性标签:两种启动方式下,在目标进程中执行
whoami /all(若系统支持),对比权限列表,移除broker中不必要的权限限制,确保令牌权限与专用启动器一致。 - 验证broker是否为进程设置了替代桌面环境:该配置可能触发文件系统重定向或权限过滤,导致
libc++.dll的实际加载路径或访问权限异常,可在ProcMon中筛选Redirected File事件确认。
2. 修复libc++.dll的访问权限
- 由于服务器未安装
icacls,使用默认支持的cacls命令为App Container的SID分配读取&执行权限:# 先通过PowerShell获取容器SID # Get-AppContainerProfile -Name "test_env" | Select-Object Sid cacls "你的构建目录\libc++.dll" /e /g S-1-15-2-<容器SID>:R - 检查
libc++.dll的安全属性:右键文件→属性→安全→高级,确认App Container的SID已被授予读取权限(Windows Server 2019的App Container权限模型与Win11存在差异,需手动配置)。
3. 解决Windows Server 2019的App Container兼容性问题
- 安装Desktop Experience功能:服务器版默认未安装该组件,部分桌面相关的App Container依赖库缺失会导致加载失败,通过服务器管理器添加该功能后重启系统。
- 安装最新累积更新:Server 2019的
kernelbase.dll、profext.dll存在App Container相关API Bug,安装KB5034441及后续累积更新可修复版本差异带来的问题。
4. 重置App Container配置
- 先删除现有App Container,再重新创建,排除残留配置导致的权限异常:
Remove-AppContainerProfile -Name "test_env" # 重新通过你的代码创建容器
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

