Repository navigation
Windows 上 AI 执行命令时屏幕闪现控制台窗口(子进程未带 CREATE_NO_WINDOW) #11791
Replies: 1 comment
|
现象你判断对了,但那个 flag 加不上去——它正好是这套东西特意绕开的。 先确认你看到的部分:受限 token 那条路径用 为什么不能直接补 0x08000000: 也就是带了 换个角度看,非受限那条路径不闪: 能提的三种形状(都不是一行 flag):
附带那条是独立的、而且可以单独修: 想验证我这条判断:切到 只读了 master |
Uh oh!
There was an error while loading. Please reload this page.
现象
AI 每执行一条 PowerShell 命令,屏幕上会闪出一个黑色控制台窗口,标题是 cmd / powershell 的完整路径(例如 C:\WINDOWS\system32\cmd.exe);偶尔是蓝色的 Windows PowerShell 窗口。窗口会盖在其它全屏/娱乐程序上面,一闪即没。
只在这个 AI 干活时出现,正常聊天、浏览时不出现。
成因(读包后定位)
真正起子进程的那几处调用 CreateProcessW / CreateProcessAsUserW,creationFlags 里没有带 CREATE_NO_WINDOW(0x08000000)。
STARTUPINFO 那边虽然设了 STARTF_USESHOWWINDOW + wShowWindow = SW_HIDE,但对控制台子系统程序来说,SW_HIDE 只能让窗口"先建出来再藏起来",创建时那一帧挡不住,所以屏幕上仍然会闪。
建议修复:在上述进程创建处的 creationFlags 补上 0x08000000。这些目标的 stdio 全部走管道,不需要控制台,加上不会影响功能。
复现与验收
用 SetWinEventHook 监听 EVENT_OBJECT_SHOW,过滤类名为 ConsoleWindowClass 的窗口,统计次数:
这条断言不需要用户肉眼盯着屏幕,可以直接进 CI。
附带一条(同一个问题域)
这台机器没有安装 PowerShell 7,pwsh-local 会静默回落到 Windows PowerShell 5.1(C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe)。用户看到的"蓝底窗口"就是它。而 5.1 默认按 OEM 代码页输出。
建议:检测不到 PowerShell 7 时给出可见提示,或优先引导安装 PS7,而不是无声回落。
All reactions