标题:针对 Windows 10 访问 Outlook 中 URL 的问题补充 出处:gOxiA=苏繁=SuFan Blog 时间:Wed, 07 Dec 2016 15:05:57 +0000 作者:gOxiA 地址:https://sufan.maytide.net/read.php/1813.htm 内容: 针对 Windows 10 访问 Outlook 中 URL 的问题补充 问题回顾《HOWTO: 解决 Windows 10 访问 Outlook 中的 URL 时提示"你要如何打开此文件" 》,微软官方的 KB3094186 确认Outlook 2007/2010 在 Windows 10 上设置 IE11 为默认浏览器时会导致相关注册表数据丢失而引发故障的发生。解决途径是使用微软的 easyfix 20155 进行修复,该修复工具其实是在注册表中对HTMLFILE新增了的“新开”指令。即“HKCR\htmlfile\shell”下新建名为“opennew\command”的项,其默认值为一段 CMD 指令“cmd /c start %1”,微软解释添加该指令后便可解决在 Outlook 中打开 URL 时总提示用哪个浏览器打开的问题,并且打开的 URL 会在当前 IE 的新选项卡中打开,以避免每点击一次 URL 都打开一个新的 IE 进程。当然,如果不介意的话,也可以直接指定 iexplore.exe %1 来执行。 早先看到这个解决方案的时候就挺纳闷,为了解决是新选项卡还是新窗口打开就要通过 cmd 调用 start 来执行,有违程序设计和开发常理,实在不够严谨。果然,后续就遇到了问题!!!如果 Outlook 中邮件内容里的 URL 包含 & 符号,那么最终被打开的 URL 将会被自动截断,这是因为 CMD 环境下,也就是我们常说的命令行会将 & 符号识别为连续执行命令符号,也就是说会把 & 符号后面的内容识别为一段命令,结果可想而知!IE 在经过 CMD 和 Start 的辗转调用后,最终得到的 URL 已经面目全非! 如果我们试图为 %1 添加双引号,那么 Outlook 中的 URL 会完整的传递给 start ,但由于地址在双引号中,所以低级的 start 已经无法识别这个链接中的 http://,也就不会自动调用 IE 去打开 http 协议类型的内容,除非双引号中只有地址,例如:http://”www.contoso.com/index.do?method=view&fdid=158¬ifytype=2”,可是要实现这样的格式写法恐怕不现实!(开发人员不会放过你的 ) 折中的办法就是修改调用命令,改用 iexplore.exe %1 来执行,但引发的问题就是每次都要打开一个新 IE 进程,否则就改回 Edge 浏览器,因为使用 Edge 绝对不会遇到这个问题。鉴于 Office 2007 /2010 的主流支持生命周期因素,在 Windows 10 上还是尽量使用最新版的 Office 最为妥当! Generated by Bo-blog 2.1.1 Release