dsh-no-console-flash:Windows 弹窗修复补丁(整合 #1344 + #1102,已验证) #1564
Culeot
started this conversation in
Show Your Plugins!
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
问题
DSH 在 Windows 上执行命令(沙箱 pwsh/bash、普通子进程)时,如果宿主没有控制台(桌面启动、后台服务),Windows 会给每个子进程新建一个可见控制台窗口,闪一下再关闭,打字都被打断。
已有讨论:#1344(沙箱弹窗+修复方案)、#1102(无控制台宿主弹 PowerShell 窗口)、#1142(频繁弹 CMD 窗口)。
为什么不能直接隐藏窗口
不能加
CREATE_NO_WINDOW:DSH 的 Windows ACL 沙箱用受限令牌跑子进程,隐藏控制台会让子进程死于0xC0000142(DLL 初始化失败,#810 有记录)。正确做法是 #1344 的方案:保持
dwCreationFlags = 0,用 STARTUPINFO 的STARTF_USESHOWWINDOW+SW_HIDE把新控制台设为隐藏。补丁内容(两处,均已实测)
dsh-sandbox-windows-acl/lib/types-*.jsdwFlags256→257(加STARTF_USESHOWWINDOW),新增wShowWindow: 0(SW_HIDE)dsh-subprocess-local/lib/index.jswindowsHide: true验证结果(本机实测)
hwnd=0 visible=no-window.noconsole.bak备份使用
node patch.cjs # 默认补 ~/.dsh,可传 DSH_HOME 路径仓库:https://github.com/Culeot/dsh-no-console-flash(README 中英双语)
欢迎官方采纳此改动进正式包(两个包的 spawn 路径都漏了窗口隐藏,
dsh-native-command/dsh-host-directory-picker-native等组件已有windowsHide)。All reactions