tigerVNC-1.10.90经RDP访问时首次剪贴板事件无法同步到目标设备问题
问题根因
tigerVNC 1.10.90版本在H5接入+RDP桥接访问Windows设备的场景下,默认剪贴板同步逻辑存在首次会话激活滞后缺陷:
- VNC服务端收到H5侧传递的剪贴板数据时,会先校验当前与目标Windows设备的RDP会话是否处于已激活可交互状态,首次剪贴板数据传输时会话校验未通过,数据会被暂存但不会主动触发下发
- 该版本默认关闭了
剪贴板数据自动重试下发配置项,暂存的剪贴板数据只有在第二次剪贴板同步触发时才会随新数据一起下发到目标设备 - 故障仅出在VNC到RDP目标设备的传输链路,因此H5客户端本地剪贴板同步无异常
修复方案
临时修复方案(无需重新编译)
- 首次需要传递剪贴板内容时,连续复制两次相同内容,第二次触发同步时即可正常下发到目标Windows设备
- 修改tigerVNC服务端启动参数,添加
-SendClipboard=always参数强制跳过会话激活校验,启动命令参考:tigervncserver -SendClipboard=always :1
注意:该参数仅在tigerVNC 1.10.x及以上版本生效,低版本无对应配置项
永久修复方案(源码修改)
修改tigerVNC源码中vncserver/XCutText.cxx文件的剪贴板下发逻辑:
- 找到
handleXCutText函数内的会话状态校验代码块 - 注释掉首次会话校验的判断逻辑,新增数据暂存后的100ms自动重试下发逻辑
- 重新编译安装tigerVNC即可彻底解决首次同步失败问题
验证方法
重启tigerVNC服务后,通过H5端首次复制内容,直接到目标Windows设备粘贴,确认内容正常同步即修复完成
内容的提问来源于stack exchange,提问作者request-terra
相关产品推荐
相关产品推荐

