Files
cmsp/internal
QiuSWandClaude Opus 5 e7c3c6849c fix: 中文 profile 路径导致 Chrome 归属校验永远失败 (#9)
负责人点「打开淘宝登录」报错:
「Chrome进程不属于配置的专属用户数据目录,已将其关闭」

根因是编码不一致。processCommandLine 用 PowerShell 读取进程命令行,
PowerShell 的标准输出使用系统 ANSI 代码页(简体中文 Windows 是 GBK),
而 Go 字符串是 UTF-8。专属 profile 路径含中文
(电商视频自动下载工具\淘宝浏览器\默认账号),两边字节不同,
strings.Index 永远匹配不上,于是 Chrome 刚启动就被判为不属于本 profile
并被杀掉。

单元测试没能发现,因为测试里比较的两个字符串都是 UTF-8。

改为让 PowerShell 先把命令行转成 UTF-8 的 Base64,Go 侧再解码。
不用 [Console]::OutputEncoding=UTF8 是因为那依赖控制台状态;
Base64 只含 ASCII,任何区域设置下都可靠。

实测三种方式:
  原样读取        含中文路径 false   ← 修复前
  设 UTF8 编码    含中文路径 true
  Base64 传输     含中文路径 true    ← 采用

已用真实运行中的 Chrome 进程验证:归属判断返回 true。
补一条防回归测试,覆盖含中文的 profile 以及编码不一致的情形。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LbdtsD3ohhSMy3KPoCgARq
2026-09-03 09:22:53 +08:00
..