Repository navigation
Windows 下 workspace-write 沙箱让所有 shell 子进程以 0xC0000142(STATUS_DLL_INIT_FAILED)失败:受限令牌默认 DACL 只并入 capability SID 所致 #11179
Replies: 2 comments
|
环境:Windows 11(build 26300,x64);DSH 桌面端 0.2.1-rc.3; 现象:权限切到「工作区内修改」(workspace-write)后,shell 完全不可用—— 独立复现:直接用 Electron-as-node 跑 app.asar 里的 根因:该包 setTokenDefaultDaclGrant(api, restrictedToken,
this.tempWriteSidPtr ?? this.writeSidPtr ?? worldSid);在 workspace-write 下 变量隔离(运行期钩子改行为,不动文件本体,全部 workspace-write +
修复建议: |
|
补充一份独立复现 + 一个能解释「为什么有人遇不到」的变量,并确认: 环境:Windows 11 22631 x64;DSH Desktop 2.0.21-next; 观察 1:这条进程链上没有控制台
观察 2:把 runner 抽出 asar 做对照,唯一变量是「链路上有没有普通令牌进程先建好控制台」同一命令(
即:受限子进程只要能继承一个已存在的控制台就能活;一旦它必须自己创建控制台,就在 DLL 初始化阶段死掉。 这与你们定位的 DACL 根因完全相容:受限令牌默认 DACL 里没有子令牌可用的普通 SID,任何「受限进程自己创建、然后再打开」的内核对象都会失败——控制台 / conhost 只是第一个撞上的;而继承一个父进程已建好的控制台不需要新建对象,也就不撞。 为什么不是每个人都遇到
修复建议(与上面那条互补)
|
Uh oh!
There was an error while loading. Please reload this page.
dsh-issue-反馈短版.md
dsh-issue-windows-sandbox-0xC0000142.md
All reactions