使用VSTO 2016 Word插件时外部链接未在默认浏览器打开问题
解决方案
你查到的旧回答中提到的「无法实现」是指无法直接修改VSTO任务面板内置IE控件的默认跳转浏览器规则,但可以通过以下两种可落地的方案绕过限制,实现外部链接用系统默认浏览器打开的需求:
方案1:拦截超链接点击事件,主动唤起默认浏览器(仅当前插件生效,推荐)
该方案通过拦截任务面板浏览器控件的跳转请求,取消默认行为后调用系统API打开链接,系统会自动唤起配置的默认浏览器:
- 首先在VSTO项目的任务面板页,给WebBrowser控件绑定
Navigating事件 - 逻辑中过滤掉自有站点的内部跳转,仅拦截外部链接请求
- 调用
Process.Start()传入目标URL完成唤起
对应C#代码示例:
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { // 替换为你的站点域名,内部跳转不拦截 if (!e.Url.Host.Equals("your-website.com", StringComparison.OrdinalIgnoreCase)) { // 取消控件默认跳转行为 e.Cancel = true; // 调用系统默认程序打开URL,会自动唤起默认浏览器 System.Diagnostics.Process.Start(e.Url.ToString()); } }
- 如果你将任务面板的默认IE内核WebBrowser控件替换为新版WebView2控件,只需要把拦截逻辑绑定到
NavigationStarting事件即可,同时还能解决IE内核的网页兼容性问题,更推荐优先升级。
方案2:修改Office全局注册表配置(所有Office程序生效)
如果不需要限制仅当前插件生效,可以通过修改注册表强制所有Office内的超链接都调用系统默认浏览器打开:
- 按下
Win+R输入regedit打开注册表编辑器 - 定位到路径:
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\Links(如果Links项不存在可以手动新建) - 新建DWORD(32位)值,命名为
BrowsingOpenInDefault,数值数据设置为1 - 重启Word后配置即可生效
该配置为全局生效,会修改当前用户下所有Office程序的超链接打开规则,适合自用场景,分发插件时不建议要求用户修改注册表。
内容的提问来源于stack exchange,提问作者Hitesh
相关产品推荐
相关产品推荐

