通过 ms-word:ofe|u| 打开 URL 文档时,误弹“无法打开 <GUID>”
一、环境
WPS Office 企业版:12.1.0.29161(Windows 10)
同一台机器安装有 Microsoft Office,Windows 的 ms-word 协议处理程序为
C:\Program Files\Microsoft Office\Root\Office16\protocolhandler.exe
对照测试:WPS 个人版 <12.1.0.29158> 无此问题
二、复现步骤
准备任意可访问的 docx URL(不需要 WebDAV,普通 HTTP 即可),例如
http://127.0.0.1:8765/sample.docx
在浏览器或资源管理器中执行
ms-word:ofe|u|http://127.0.0.1:8765/sample.docx
Windows 由 Office protocolhandler.exe 转交给 WPS,WPS 进程实际收到的命令行为:
"wps.exe" /cid 9E01F8D0-ACD8-4F50-93D0-8EEAD61BDDCC "http://127.0.0.1:8765/sample.docx"
文档可以正常打开,但同时弹出模态框:
无法打开 “9E01F8D0-ACD8-4F50-93D0-8EEAD61BDDCC”。
此文件可能被重命名、删除或移动了位置。
三、关键证据
弹窗中的 GUID 与 WPS 命令行上的 /cid 参数完全一致,且每次打开都会变化
(另一次复现为 DE2382C3-E96E-4D2A-A1AD-13A935D0DD46)。
该 GUID 对应的文件在 %TEMP%、WPS 缓存目录、Microsoft OfficeFileCache
中均不存在。
文档本体不受影响:点击“确定”后可正常查看/编辑/保存(WebDAV 场景可保存),
弹窗属于多余的误报。
对照测试 1:直接以
wps.exe "ms-word:ofe|u|http://127.0.0.1:8765/sample.docx"
启动(不经过 Office protocolhandler,不传 /cid),WPS 可正确解析 ofe 前缀
并打开文档,不弹任何错误。
说明 WPS 自身处理 ofe|u| URL 正常,问题出在对 /cid 参数的处理。
对照测试 2:WPS 个人版在完全相同的操作下不弹窗。
四、预期行为
/cid 仅在使用 Microsoft Office 的 OfficeFileCache 机制、且对应缓存项存在时
才应被当作本地文件使用;
普通 HTTP/WebDAV URL 场景下应忽略 /cid 直接打开 URL,或静默回退,
不应弹出“文件不存在”的模态框。
五、影响
企业版用户每次点击系统里的“在线编辑(WebDAV)”都会看到该弹窗,需手动点
“确定”,容易被误认为文件丢失或编辑失败;个人版无此现象。