背景
提供程序动态链接库 (DLL) 加载项或独立集成用于更改或扩展 Microsoft Outlook 功能,例如通讯簿。 但是,攻击者也可使用 DLL 来危害计算机或网络安全。 为了帮助提高安全性,MAPI 现在阻止加载提供程序 DLL(如果它们注册不正确)。
应尽可能使用 MapiSvc.inf 注册提供程序 DLL,如MapiSvc.inf文件格式中所述。 但是,注册提供程序 DLL 不一定始终可行。 例如,加载项可能在安装过程中自动注册提供程序 DLL,或者不支持的加载项可能无法正确注册提供程序 DLL,并且无法修复。
本文介绍提供程序 DLL 注册错误时可能遇到的症状,并提供一种解决方法,使 MAPI 在 DLL 无法正确注册时加载提供程序 DLL。
本文包含的信息演示如何帮助减少安全设置或如何关闭计算机的安全功能。 你可以进行这些更改来解决特定问题。 进行这些更改之前,建议评估与在特定的环境中实施此解决方法相关的风险。 如果选择实施此解决方法,请执行任何适当的附加步骤来帮助保护系统。
症状
如果 MAPI 阻止提供程序 DLL,可能会遇到以下症状。
症状 1
将收到如下所示的错误消息:
发生了意外错误。 MAPI 无法加载信息服务<DLL 名称>。 请检查是否已正确安装并配置了该服务。
此外,Outlook 还会在 Windows 事件查看器中生成一个或多个错误级别条目。 此事件日志条目包括被阻止的提供程序 DLL 的路径。 此日志条目还包含一个链接,用于详细了解如何通过 MapiSvc.inf 正确注册提供程序 DLL。
症状 2
DLL 提供的功能不再可用。 可能会看到意外行为或其他错误消息,具体取决于哪些功能受到影响。
注意
-
你遇到的症状可能会发生变化,具体取决于加载项如何响应阻止提供程序 DLL。 例如,错误消息可能每次出现,可能只出现一次,也可能完全不显示。 因此,如果错误消息停止显示,这并不表示问题已解决。
-
如果不采取任何操作,则 MAPI 将继续阻止每次请求此提供程序 DLL。 你可能会继续看到错误消息和事件日志条目 (类似于以下屏幕截图) ,并且任何受影响的加载项功能将继续在每个 Outlook 会话中受到影响。
事件说明: 本地化:%1 是 MAPI 将阻止的提供程序 DLL 文件名。 这可以包含对文件名有效的任何字母数字字符。 示例 :"EMSMDB.DLL"MessageId:OUTL_EVENT_ID_BLOCK_WARNING_FILESPEC_PROVIDER MessageText:安全警告加载 %1。 此 MAPI 提供程序 DLL 可能对系统有害。 应仅从已在 MapiSvc.Inf 中注册的受信任提供程序加载 DLL。 在将来的 Outlook 客户端更新中,此提供程序 DLL 将被阻止,并且其功能将不再可用。 有关注册提供程序 DLL,请参阅 https://go.microsoft.com/fwlink/?linkid=2009861&clcid=0x409。
解决方法
重要说明 不建议应用此解决方法,因为这会使计算机或网络更容易受到恶意用户或恶意软件(如病毒)的攻击。 我们建议通过 MapiSvc.inf 注册提供程序 DLL,以帮助保护计算机和网络。 若要详细了解如何正确注册提供程序 DLL,请参阅 MapiSvc.inf 的文件格式。
备注 存在此解决方法允许加载提供程序 DLL 的特定条件:
-
提供程序 DLL 路径必须不包含任何目录组件。 查看错误消息和 Windows 事件日志条目以查看路径。 出于安全原因,MAPI 不允许使用此解决方法加载包含任何目录组件的提供程序 DLL 路径。 在这种情况下,应改为使用 MapiSvc.inf 注册提供程序 DLL,因为 MapiSvc.inf 允许在任意路径注册提供程序 DLL。
-
提供程序 DLL 必须存在于安装 Office 的 Office 16 路径中或 Windows System32 目录中。 如果提供程序 DLL 未位于上述任一位置,MAPI 将无法找到,并且无法通过解决方法步骤加载提供程序 DLL。
如果不满足这些条件,则不能使用此解决方法,并且应该通过 MapiSvc.inf 注册提供程序 DLL。
警告:
-
请仔细执行本部分中的步骤。 如果注册表修改不正确,可能会出现严重问题。 在修改注册表 之前,请备份注册表,以防 出现问题。
-
在应用此解决方法之前,请确认 MAPI 正在加载正确的提供程序 DLL。 为此,请查看错误消息或 Windows 事件日志条目中提供的路径以及 MAPI 将搜索的目录集。 加载任意提供程序 DLL 不安全。
-
打开注册表编辑器,然后找到以下注册表子项
:HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security -
如果安全密钥不存在,请通过选择Outlook密钥来创建它,然后编辑>新建>密钥。 请确保正确命名新密钥。
-
在 Security 下创建名为TrustedProviders 的注册表项。 验证TrustedProviders子项的路径是否如下所示
:HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security\TrustedProviders -
(可选)可以改为在下列注册表位置创建TrustedProviders密钥
:HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\16.0\Outlook\Security -
在TrustedProviders密钥中,添加新的字符串值,然后将"名称"字段设置为提供程序 DLL 路径 (包括错误消息或 Windows 事件日志条目中的文件扩展名".dll") 。 例如,屏幕截图中示例错误消息中的路径MyProvider.dll。 若要使 MAPI 能够加载此提供程序 DLL,请输入MyProvider.dll名称。 请记住,只有没有目录组件的路径才适用于此解决方法。 请注意,"数据"字段中不需要任何文本。
备注-
在磁盘上,提供程序 DLL 名称包含后缀"32", ("myprovider32.dll") 。 不应在注册表项中包含此"32"后缀。 此行为符合MapiSvc.inf的预期,该预期还要求不包括"32"后缀。
-
" 名称"字段不区分大小写。
-
-
必须为被阻止的每个提供程序 DLL 创建唯一的注册表项。 对每个阻止的提供程序 DLL 重复步骤 5。 在将提供程序 DLL 添加到此列表之前,请确保通过错误消息或 Windows 事件日志仔细检查每个提供程序 DLL 的路径。 此行为确保应加载提供程序 DLL。 此外,如果路径包含任何目录组件,出于安全原因,只能通过 MapiSvc.inf 注册该路径。
-
启动 Outlook,并验证错误是否得到解决。 如果任何加载项的行为受到影响,请验证它现在是否如期运行。
更多信息
本文仅适用于 Office 或 Outlook 的 Office 365 订阅版本。 它不适用于以下 Office 版本:
-
早期版本的 Office (如 Office 2010 和 Office 2013)
-
使用 Windows Installer 的 Office 2016 永久 (MSI) 安装技术
-
Office 2019
在这些版本中,MAPI 将执行一些安全检查,但不严格强制实施相同的要求。