在 Office 中选择超链接时的错误消息:“Cannot locate the Internet server or proxy server”(找不到 Internet 服务器或代理服务器)

症状

在 Office 文档中创建一个超链接之后单击该链接时,你可能会收到下面的错误消息之一:

无法打开 <URL>。 找不到 Internet 服务器或代理服务器。

无法打开 <URL>。 无法打开指定的文件。

<URL> = 插入的超链接。

注意

如果直接在浏览器中键入超链接,或者在“运行”对话框的“打开”框中键入超链接, (选择“ 开始”,然后选择“ 运行) ”。

原因

如果存在以下情况,则会发生这种问题:

  • 您正在使用 Microsoft Internet Explorer:

    • 作为代理服务器 -或-
    • 使用不允许在本地网络上放置 HTTP 请求的防火墙
  • Internet Explorer 不是默认浏览器。

  • 以下位置中不存在 ForceShellExecute 注册表项,或者未设置为 1

    • 对于安装在 64 位操作系统上的 32 位版本的 Office:

      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\9.0\Common\Internet

    • 对于安装在 32 位操作系统上的 32 位版本的 Office 或安装在 64 位操作系统上的 64 位版本的 Office:

      HKEY_LOCAL_MACHINE\Software\Microsoft\Office\9.0\Common\Internet

    注意

    注册表路径不依赖于 Office 版本。

解决方法

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 有关如何备份和还原注册表的更多信息,请单击下面的文章编号以查看 Microsoft 知识库中的相应文章:

322756 如何在 Windows 中备份和还原注册表

将 Internet 子健添加到注册表并设置数值数据

要解决此问题,请添加 ForceShellExecute 子键(如果不存在)并设置数值数据,或者如果存在,则设置 ForceShellExecute 子键的数值数据。

  1. 退出正在运行的所有程序。

  2. 选择“开始”,然后选择“运行”。 在“打开”框中键入 regedit,然后选择“确定”

  3. 在“注册表编辑器”中,找到以下子项之一(如果这些项不存在,请创建它们):

    • 对于 64 位版本 Windows 上的 32 位版本 Office:

      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\9.0\Common\Internet

    • 对于 32 位版本 Windows 上的 32 位版本 Office:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\Common\Internet

    • 对于 64 位版本 Windows 上的 64 位版本 Office:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\Common\Internet

  4. 确保选择了 Internet 子键。 在 “编辑” 菜单上,指向“ 新建”,然后选择“ DWORD 值”。 添加以下注册表值:

    数值名称:ForceShellExecute

  5. 双击“ForceShellExecute”,然后将该数值数据设置为 1。 选择“确定”

  6. 在“注册表”菜单上,选择“编辑”。

问题是否已修复?

检查问题是否已修复。 如果问题已修复,则已完成此部分。 如果问题未修复, 请联系支持人员

更多信息

使用此替代方法后,单击超链接可能不会转到 Microsoft Word 文档或 Microsoft Excel 工作表。

Office 使用 Urlmon.dll 文件来处理所有 Internet 转换。

在这种情况下,Urlmon.dll 文件通过代理服务器发送获取文件 http:// 的请求。 代理服务器根据 http://request 的 HTTP 用户代理字段看到请求来自 Internet Explorer。 然后它给出一个错误 403,内容基本为“访问被拒绝”。

Urlmon.dll 文件获取此信息,并仅返回前面提到的错误消息。 该错误意味着请求失败,但它从未说明失败的原因。

解决方法是在 URL 中使用 ShellExecute()。 这允许操作系统在默认浏览器上启动 URL。 如果默认浏览器不受代理服务器限制,则会显示正确的页面。