HOWTO: 解决 Outlook 邮件正文无法正确插入UNC类型快捷方式链接的问题
实在想不出更准确的题目,所以在分享前,gOxIA 觉得很有必要详细描述一下这个故障现象。用户环境是 Windows 7 + Office 2010(经典组合),在其桌面上有一个文件夹快捷方式(.lnk),目标指向到的是一个 UNC 路径,结构基本就是“\\\\10.0.0.1\\aaa\\bbb\\ccc\\ddd\\eee”这个样子,当然示例路径中的字母在实际环境下是中文+符号。如下图所示:
故障现象:用户在 Outlook 中撰写一封邮件,在正文部分使用“插入——超链接”功能,添加这个桌面快捷方式的地址。正常情况下,“插入超链接”窗口中的“地址”中显示的应该是这个快捷方式(lnk)的实际 UNC 路径,确定后邮件正文中添加的也应该是这个 UNC 路径。
但是在用户故障环境下,显示和插入的结果却是这个快捷方式(lnk)的本地路径,如下图所示:
问题虽小,但用户重视程度之高,在其他用户电脑上测试发现显示的确实为 UNC 路径,那么说明这个问题是一个故障。在打 Office 补丁,甚至重装了 Office 后,故障仍未解决。从故障看很可能是一直问题,所以决定寻求官方支持,但结果是 by design,或第三方插件干扰,实在无法接受这个解释!从经验来看这个问题很明显是一个故障,并且很可能是产品的已知问题。
看来必须要在自己的测试环境下重现故障,才能更好的寻找根因!随即开了一台虚拟机配置好了环境,但未重现故障,对比版本后得到如下信息:
用户环境:系统6.1.7601.17567 Office14.0.7015.1000
测试环境:系统6.1.7601.23537 Office14.0.7181.5000
基本可以确认用户环境肯定是缺少了什么补丁所致,因为Office 2010也有安装 SP2,而后续的零星补丁又太琐碎,也尝试直接覆盖文件,但并未解决,可以判定该问题与 Office 补丁无关,那肯定就出在系统上面了。
随后,重新搭建了测试环境,为虚拟机安装 RTM 版操作系统和 Office,果然重现了故障。RTM 环境下的版本信息如下:
RTM环境:系统6.1.7601.17514 Office14.0.7015.1000
至此已经明确了故障问题,用户因缺少某个系统补丁,导致在插入一个 UNC 类型的快捷方式时,会出现未达预期的结果。通过测试,并不是所有的 UNC 快捷方式都会出现这个问题,难道是中文长路径所致?但长度并未超过 256,且字符也属常见类型,看来只能通过 Process Monitor 抓包进行分析。
在抓包的数据中发现了问题!当添加超链接时,进程会遍历这个 lnk 所对应的 UNC 路径,但此时却出现了拒绝访问,如上图所示。根据分析的结果对这个 lnk 对应的 UNC 每一级目录进行了访问测试,果然如此!这个 UNC 路径“\\\\10.0.0.1\\aaa\\bbb\\ccc\\ddd\\eee”中,其中 DDD 和 EEE 是允许用户访问的,而上一级目录则禁止当前用户访问。
这也进一步验证了,该故障属于一个 Windows 的已知问题,接下来就是对更新补丁进行验证。将 RTM 测试环境接入内网 WSUS,拿到了 103 个补丁,这些补丁包含了安全和质量更新,还有汇总更新补丁。在一次打完所有补丁后进行测试发现故障消除! Great,可算有了里程碑式的进展,那么这 100 多个补丁中哪个才是修复当前故障问题的补丁呢?
要对 103 个补丁进行测试真的是一个巨大、枯燥,令人抓狂的工作,最终锁定 KB4022722 这个补丁!!!至此故障彻底解除,结尾要与大家分享一个重要的经验,在处理 Windows 故障,尤其涉及更新补丁时,在关键节点判断问题类型十分重要,如果分析归类为已知问题,应确认该问题是属于安全的还是质量的,这样才能有效减少工作量!!!(:-P)