在 \Autodiscover 项下设置注册表时发生意外自动发现行为

症状

当 Microsoft Outlook 尝试从运行 Microsoft Exchange Server 的服务器中检索自动发现信息时,如果使用可用于控制自动发现的一个或多个可用注册表值,则可能会出现意外结果。

原因

当 Outlook 尝试使用客户端访问服务器 (CAS) 角色来联系 Exchange 服务器上的自动发现服务时,它可以使用几种不同的方法来连接该服务,具体取决于客户端-服务器拓扑。 Outlook 当前使用的实现方法如下:

  • SCP 查找
  • HTTPS 根域查询
  • HTTPS 自动发现域查询
  • 本地 XML 文件
  • HTTP 重定向方法
  • SRV 记录查询
  • Outlook 配置文件中的缓存 URL(Outlook 2010 版本 14.0.7140.5001 及更高版本的新功能)
  • 直接连接到 Microsoft 365(Outlook 2016 版本 16.0.6741.2017 及更高版本的新功能)

默认情况下,如果 Outlook 无法连接到自动发现,它将尝试其中一个或多个方法。 例如,在计算机未加入域的情况下,Outlook 将尝试通过使用 DNS 连接到预定义的 URL(例如 https://autodiscover.contoso.com/autodiscover/autodiscover.xml)。 如果失败,Outlook 将尝试 HTTP 重定向方法。 如果它也失败,Outlook 将尝试使用 SRV 记录查找方法。 如果所有查找方法都失败,Outlook 将无法获取 Outlook Anywhere 配置和 URL 设置。

有关 Outlook 使用的不同自动发现连接方法的详细信息,请参阅以下 Exchange 自动发现服务文档:

在某些情况下,你可能希望使用与自动发现相关的注册表/策略值来控制 Outlook 用于连接自动发现的方法。 但是,如果不正确地配置自动发现注册表/策略值,可能会阻止 Outlook 获取自动发现信息。

解决方案

要解决此问题,请查看 Outlook 客户端上可能存在的与自动发现相关的注册表数据,并确保数据配置正确。 此外,如果不确定是否需要注册表数据,请考虑将以上任意注册表值的数据更改为零 (0),然后测试 Outlook,以查看是否有不一样的自动发现体验。

重要

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

  1. 启动注册表编辑器。

  2. 找到并选择以下注册表子项:

    HKEY_CURRENT_USER\Software\Microsoft\Office\x.0\Outlook\AutoDiscover

    注意

    此注册表路径中的 x.0 对应于 Outlook 版本(16.0 = Outlook 2016,15.0 = Outlook 2013,14.0 = Outlook 2010,12.0 = Outlook 2007)。

  3. 查看位于 \Autodiscover 子项下的下列可能的 DWORD 值。

    • PreferLocalXML

    • PreferProvidedEmailInAutoDiscoverAuthPrompts

      此值使 Exchange 管理员能够指定在自动发现方案期间是否使用配置的帐户电子邮件或用户主体名称 (UPN) 对用户进行身份验证。 有关更多信息,请参阅 2019 年 11 月 5 日 Outlook 2016 更新 (KB4484139)

    • ExcludeHttpRedirect

    • ExcludeHttpsAutoDiscoverDomain

    • ExcludeHttpsRootDomain

    • ExcludeScpLookup

    • ExcludeSrvRecord

    • ExcludeLastKnownGoodURL(仅适用于 Outlook 2010 版本 14.0.7140.5001 和更高版本)

    • ExcludeExplicitO365Endpoint (仅适用于 Outlook 2016 版本 16.0.6741.2017 及更高版本)

    注意

    某些文档指出,Outlook 在这种情况下使用 ExcludeSrvLookupvalue。 很遗憾,此文档不正确,ExcludeSrvLookup 值在 Outlook 代码中不存在。 Outlook 仅使用 ExcludeSrvRecordregistry 注册表值来控制自动发现的 SRV 记录查找。 因此,如果在 \Autodiscover 子项下找到名为 ExcludeSrvLookup 的值,则可以安全地将其值更改为 0。

  4. 使用以下注册表子项重复步骤 3:

    HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\x.0\Outlook\AutoDiscover

    注意

    此注册表路径中的 x.0 对应于 Outlook 版本(16.0 = Outlook 2016,15.0 = Outlook 2013,14.0 = Outlook 2010,12.0 = Outlook 2007)。

更多信息

你可以在 Outlook 中使用下列步骤来确定 Outlook 尝试从 Exchange 检索自动发现信息的方法:

  1. 启动 Outlook。
  2. 按住 Ctrl 键,右键单击通知区域中的 Outlook 图标,然后单击“测试电子邮件自动配置”。
  3. 验证在“电子邮件地址”框中输入的电子邮件地址是否正确。
  4. 如果你未登录到域中,或者你访问的不是你的邮箱,则输入你的密码。
  5. 单击以清除“使用 Guessmart”和“保护 Guessmart 身份验证”复选框。
  6. 单击“测试”。
  7. 在“日志”选项卡上查看详细信息。

下图显示了当 ExcludeScpLookup 和 ExcludeHttpsAutoDiscoverDomain 值设置为 1 时的日志选项卡。

屏幕截图显示了当 ExcludeScpLookup 和 ExcludeHttpsAutoDiscoverDomain 值设置为 1 时,日志选项卡下的信息。

仅当 ExcludeScpLookup 值设置为 1 时比较此信息。

屏幕截图显示了当 ExcludeScpLookup 值设置为 1 时,日志选项卡下的信息。

注意

忽略这些图中的失败,因为此信息旨在为你展示 Outlook 进行的不同查找尝试。

此外,如果在 Outlook(2007 或 2010)中启用日志记录,则可以在 %temp%\Olkdisc.log 文件中找到不同的 Autodiscover 查找尝试。 此日志文件还包括已配置为排除任何自动发现查找方法的任何注册表设置。 在下图中,可以清楚地看到 ExcludeScpLookup 和 ExcludeHttpsAutoDiscoverDomain 值都设置为 1。

屏幕截图显示了 ExcludeScpLookup 和 ExcludeHttpsAutoDiscoverDomain 都位于其中的日志文件。

有关自动发现客户端管理的详细信息,请参阅以下知识库文章:

2612922 如何使用组策略控制 Outlook 自动发现