OL2000:有关 Outlook 电子邮件安全更新的开发人员信息

文章翻译 文章翻译
文章编号: 262701 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文为开发人员、解决方案提供商和独立软件供应商 (ISV) 提供了有关 2000 年 6 月 7 日发布的 Microsoft Outlook 电子邮件安全更新的信息。

更多信息

本文包含以下各节:

重要说明:Microsoft 建议您在阅读本文之前,先熟悉一下 Outlook 电子邮件安全更新的基本功能。有关 Outlook 电子邮件安全更新的一般信息,请访问下面的 Microsoft Web 站点:
http://www.microsoft.com/downloads/details.aspx?FamilyID=96DF48A9-7638-429E-816E-35F16F6528CA&displaylang=EN
有关 Outlook 电子邮件安全更新的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
262631 OL2000:有关 Outlook 电子邮件安全更新的信息
本文介绍了在应用此安全更新后 Outlook 的行为。管理员可以配置客户机以使其只包含这些限制中的某些。作为一名开发人员,您需要熟悉可用于此安全更新的管理选项。 有关如何覆盖由此安全更新设定的限制的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
263297 OL2000:有关 Outlook 电子邮件安全更新的管理员信息

概述

Outlook 电子邮件安全更新针对恶意的电子邮件为 Outlook 提供了附加级别的保护。此更新直接影响许多 Outlook 功能的工作方式,而且它可能对您生成的特定解决方案产生不利影响,这些解决方案使用 Outlook 中附带的开发人员功能和其他邮件技术或应用程序编程接口 (API) 生成。如果您使用 Microsoft 邮件技术创建了任一类型的解决方案,Microsoft 建议您熟悉一下此安全更新对 Outlook 所做的更改,以及那些更改对您的解决方案有何影响。在有些情况下,解决方案完全不起作用;而在另一些情况下,解决方案可能导致出现一条警告消息,它会在您尝试运行解决方案时中断解决方案。

此安全更新在以下方面更改了 Outlook 和一般邮件功能:
  • 一般附件行为(从最终用户的角度)
  • Outlook 对象模型
  • Outlook 中与安全有关的其他方面
  • 协作数据对象 (CDO) 对象模型
  • 简单邮件应用程序编程接口(或简单 MAPI)
重要说明:此安全更新会影响所有使用 Outlook 对象模型和简单 MAPI 的自定义解决方案,即使它们经过了数字签名。这些解决方案包括以下这些:

  • 发布到任一文件夹或窗体库(包括企业窗体库)的 Outlook 自定义窗体。
  • Outlook COM 加载项。
  • Outlook Visual Basic for Applications。
  • 使用 Outlook 对象模型或简单 MAPI 的任何其他类型的开发项目。

Outlook 对象模型设计更改

附件

在 Outlook 对象模型中,无法访问带有 1 级或“不安全”文件扩展名的附件,具体说就是:
  • 对象模型中的 Attachments 集合无法识别不安全附件。
  • 如果您试图以编程方式发送包含这种附件的邮件,该邮件不会被发送。如果程序是用 C 或 C++ 编程语言编写的,您会收到 MAPI_E_CANCELLED 返回代码。
  • 如果您试图使用 Outlook 对象模型打开“不安全”文件系统对象(或“freedoc”文件),您会收到使用 C 或 C++ 编程语言编写的 E_FAIL 返回代码。安装此更新前,您可以在 Outlook 对象模型中通过使用 Display 方法来打开“不安全”文件系统对象。

Item.Send

当您运行使用 Outlook 对象模型的程序来调用 Send 方法时,您会收到一条警告消息。该警告消息告知您一个程序正试图以您的名义发送邮件,并询问您是否允许发送此邮件。警告消息中包含一个和一个按钮。但是,按钮在警告消息出现 5 秒钟后才可用。单击可立即解除此警告消息。单击时,Send 方法返回使用 C 或 C++ 编程语言编写的 E_FAIL 错误。

访问通讯簿和收件人

如果某个程序试图使用 Outlook 对象模型来引用任何类型的收件人信息,将会显示一个对话框,要求您确认对这些信息的访问。您可以允许对通讯簿或收件人信息进行访问,访问时间最长为收到此对话框后的 10 分钟。这就使得诸如移动设备同步之类的功能得以完成。如果您决定不允许访问您的通讯簿或收件人信息,则对于所有这些使用 C 或 C++ 编程语言编写的消息,您都会收到 E_FAIL 返回代码。

当某个解决方案试图以编程方式访问 Outlook 对象模型的以下功能时,您会收到此确认对话框:
  • AddressEntries 集合或任何 AddressEntry 对象。
  • Recipients 集合或任何 Recipient 对象。
  • ContactItem 对象的下列属性:
    Email1.Address
    Email1.AddressType
    Email1.DisplayName
    Email1.EntryID
    Email2.Address
    Email2.AddressType
    Email2.DisplayName
    Email2.EntryID
    Email3.Address
    Email3.AddressType
    Email3.DisplayName
    Email3.EntryID
    NetMeetingAlias
    ReferredBy
  • MailItem 对象的下列属性:
    SentOnBehalfOfName
    SenderName
    ReceivedByName
    ReceivedOnBehalfOfName
    ReplyRecipientNames
    To
    Cc
    Bcc
  • AppointmentItem 对象的下列属性:
    Organizer
    RequiredAttendees
    OptionalAttendees
    Resources
    NetMeetingOrganizerAlias
  • TaskItem 对象的下列属性:
    ContactNames
    Contacts
    Delegator
    Owner
    StatusUpdateRecipients
    StatusOnCompletionRecipients
  • DistListItem 对象的 GetMember 方法。
  • JournalItem 对象的 ContactNames 属性。
  • MeetingItem 对象的 SenderName 属性。
  • PostItem 对象的 SenderName 属性。
  • Namespace 对象的 GetRecipientFromID 属性。
  • Action 对象的 Execute 方法。
  • UserProperty 对象的 Formula 属性。

Item.SaveAs

当您使用 SaveAs 方法将项目保存到文件系统时,您会收到一条“address book”(通讯簿)警告消息。这包括所有类型的项目,无论这些项目是否包含附件或活动内容。执行此更改后,您就无法以编程方式将项目保存到文件中,然后分析该文件来检索电子邮件地址。

“发送”命令栏按钮

无法再使用 Execute 方法以编程方式单击 Outlook 工具栏上的发送按钮。尽管这种做法没有在 Outlook 解决方案中普遍采用,但已经进行了此更改,以防止恶意企图。对于所有这些使用 C 或 C++ 编程语言编写的消息,您都会收到 E_FAIL 返回代码。

SendKeys

Outlook 不允许通过使用 Visual Basic 或 Visual Basic for Applications 的 SendKeys 命令访问某些对话框。这样可以防止恶意程序自动解除警告消息并避开新的安全功能。

未发布窗体中的 VBScript 不再运行

创建自定义 Outlook 窗体时,您可以选择在项目内直接嵌入 Visual Basic Scripting Edition (VBScript)。如果其他用户无法访问已发布的窗体,您则可以这样做。这些类型的窗体称为“一次性”窗体。

有关一次性窗体的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
207896 OL2000: Working with Form Definitions and One-Off Forms
如果您在未应用此更新的 Outlook 版本中打开这些项目之一,Outlook 会显示安全警告消息,询问您是想在窗体中启用这些代码还是禁用这些代码。如果您使用的 Outlook 版本已应用了此更新,Outlook 会禁用这些代码并且您无法激活它。如果您想在自定义窗体中使用用 VBScript 编写的脚本,您必须将该自定义窗体发布到企业窗体库或 Microsoft Exchange Server 计算机上的公用文件夹中。您还可以分发该自定义窗体并将它安装到各个客户机上的本地窗体库中。

将 Office 应用程序重置为高安全性

为了帮助防范 Microsoft Office 文档中可能存在的有害宏病毒,此安全更新将以下列表中的 Office 程序设为“高安全性”模式。

注意:对于通常的 Microsoft Office 97 程序,系统会询问您是否要运行宏。对于通常的 Microsoft Office 2000 程序,只有经过签名并且是可信的宏才可以运行。如果宏经过签名并且是可信的,系统不会询问您是否要运行它们。

受影响的产品

  • 只限 Microsoft Outlook 2000。Outlook 98 中不包含 Visual Basic for Applications。
  • Microsoft Word 2000 和 Microsoft Word 97。默认情况下,Word 在 Office 2000 中处于高安全性模式。
  • Microsoft Excel 2000 和 Microsoft Excel 97。
  • Microsoft PowerPoint 2000 和 Microsoft PowerPoint 97。
注意:Microsoft Access 没有等效的宏安全性设置,因而不会受到影响。结果,所有 Access 文档类型都包括在无法访问的不安全文件扩展名的列表中。

Outlook 和 HTML 邮件

默认情况下,此安全更新会将 Outlook 置于“受限区域”中。如果您打开超文本标记语言 (HTML) 格式的电子邮件,而且该 HTML 包含脚本,则该脚本将在 Internet 安全设置的上下文中运行。

注意:这是 Outlook 98 和 Outlook 2000 之间的一个不同点。当您使用 Outlook 98 时,只要安全设置设置得足够低,活动内容就可以运行。安装了 Outlook 电子邮件安全更新后,不管 Internet 的安全设置如何,Outlook 2000 都会完全禁用 HTML 电子邮件中的脚本。

简单 MAPI 设计更改

当 Outlook 作为默认简单 MAPI 客户端安装到计算机上时,Outlook 将处理通过使用简单 MAPI 调用发出的请求。因此,当您安装 Outlook 电子邮件安全更新时,处理简单 MAPI 调用的方式将会发生更改。默认情况下,如果您使用许多简单 MAPI 函数,您将会收到一条警告消息,告知您一个程序正试图以您的名义访问收件人信息或发送邮件。

以下列表描述了 Outlook 如何响应简单 MAPI 调用。
简单 MAPI 调用   经 Outlook 处理后的行为
----------------------------------------------------------------
MAPIAddress        确定
MAPIDeleteMail     确定
MAPIDetails        确定
MAPIFindNext       确定
MAPIFreeBuffer     确定
MAPILogoff         确定
MAPILogon          确定
MAPIReadMail       提示
MAPIResolveName    提示
MAPISaveMail       确定
MAPISendDocuments  确定
MAPISendMail       确定(带 MAPI_DIALOG 参数),否则为提示
有关简单 MAPI 调用的更多信息,请参阅 Microsoft Web 站点上的以下文章:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/mapi/html/9a99b366-44e6-4665-9308-2eddf57e512c.asp

CDO 设计更改

如果计算机上以前安装有 CDO 对象模型,Outlook 2000 电子邮件安全更新将不会删除它。这一点与 Outlook 98 电子邮件安全更新不同,后者会从计算机中删除 CDO 对象模型。

CDO 1.21 对象模型已被更改,以便反映对 Outlook 对象模型和简单 MAPI 所做的更改。有关 CDO 更改的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
268279 OL2000: Information About the CDO E-mail Security Update
268372 OL2000:Developer Information About the CDO E-mail Security Update
有关 CDO 对象模型的更多信息,请参阅 Microsoft Web 站点上的以下文章:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/mapi/html/_mapi1book_common_messaging_calls_cmc_.asp

不再支持通用邮件调用

安装了 Outlook 电子邮件安全更新后,通用邮件调用 (CMC) 将不再起作用。CMC 接口包括 10 个函数,使您能够快速地向自定义程序中添加简单邮件功能。例如,您的程序可以使用单个 CMC 函数调用发送邮件,使用两个 CMC 函数调用接收邮件。

有关 CMC 的其他信息,请参见下面的 Microsoft Web 站点:
http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/mapi/_mapi1book_programming_with_cmc.htm
Microsoft 不打算重新实现此功能,因此建议您不要在邮件解决方案中使用 CMC。

使用安全更新设计解决方案

没有任何直接的编程方法可用来确定用户启用了哪些安全更新功能。不过,根据您的解决方案的不同,您或许可以使用下列一种或多种方法来确定是否已经安装了安全更新。

确定 Outlook 的内部版本号

您可以通过编程方式确定 Outlook 的版本,以查看此安全更新是否已应用于 Outlook。但是,这种方法不会直接告知您管理员是否已授予用户任何“覆盖”能力。以下 Outlook Visual Basic for Applications 代码示例阐释了如何才能确定计算机上所安装的 Outlook 的版本:
Sub CheckForVersion()
   MsgBox UpdateApplied
End Sub

Function UpdateApplied()
   Set ol = CreateObject("Outlook.Application")
   iBuild = Int(Right(ol.Version, 4))
   ' NOTE: The version number format changed between Outlook 98 and 2000
   If iBuild >= 4201 Then
      UpdateApplied = True
   Else
      UpdateApplied = False
   End If
   Set ol = Nothing
End Function
注意:此段代码在 Outlook 97 中不起作用,因为 Outlook 97 没有在对象模型中包含 Version 属性。

确定邮件发送位置

您可能需要检查 Outlook 是否将邮件发往个人文件夹文件 (.pst)。如果邮件是发往个人文件夹文件,则所有安全更新功能都将生效。以下 Outlook 自动化代码示例阐释了如何才能确定用户的邮件是发往邮箱还是发往个人文件夹文件。
Sub CheckForPST()
   MsgBox UsingPST
End Sub

Function UsingPST()
   Set ol = CreateObject("Outlook.Application")
   Set oInbox = ol.Session.GetDefaultFolder(6) ' 6 = olFolderInbox
   If InStr(oInbox.Parent.Name, "Mailbox - ") Then
      UsingPST = False
   Else
      UsingPST = True
   End If
   Set oInbox = Nothing
   Set ol = Nothing
End Function

参考

有关 Outlook 电子邮件安全更新的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
262631 OL2000:有关 Outlook 电子邮件安全更新的信息
262701 OL2000:有关 Outlook 电子邮件安全更新的开发人员信息
263297 OL2000:有关 Outlook 电子邮件安全更新的管理员信息
262634 OL2000:Outlook 电子邮件安全更新的已知问题
264567 OL2000:Known Setup Issues with the Outlook E-mail Security Update
264128 OL2000:Outlook 电子邮件安全更新程序会出现的互操作性问题
264130 OL2000:Known Third-Party Issues with the Outlook E-mail Security Update

属性

文章编号: 262701 - 最后修改: 2006年10月11日 - 修订: 6.0
这篇文章中的信息适用于:
  • Microsoft Outlook 2000 标准版
关键字:?
kbinfo kbdownload KB262701
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com