开发 Office Outlook 2007 自定义解决方案时的已知问题

摘要

本文介绍为 Microsoft Office Outlook 2007 开发自定义解决方案时的一些已知问题。 本文还概述了 Outlook 2007 开发平台的一些已知问题。 这些问题包括对命令位置的更改和对 Outlook 显示 COM 加载项方式的更改。此外,本文还讨论了 Outlook 2007 中的功能更改。 本文中提到的已知问题与对象模型、Microsoft Office Outlook 2003 或早期版本 Outlook 中的自定义表单或 Outlook 2007 中的窗体区域没有直接关系。

“已禁用项目”命令现在位于“帮助”菜单上

在 Outlook 2007 中,“ 禁用邮件 ”命令已从“关于”窗口移动到 “帮助 ”菜单。 若要访问“ 禁用项目 ”对话框,请使用以下方法之一。

  • 方法 1

    “帮助 ”菜单上,选择 “禁用项”。

  • 方法 2

    1. “工具” 菜单上,选择 “信任中心”。
    2. 在导航窗格中,选择 加载项
    3. “管理 ”列表中,选择 “已禁用的项”,然后选择 “Go”。

使用 /safe 开关启动 Outlook 2007 时,将禁用 COM 加载项

可以使用 /safe 开关启动 Outlook 2007 和早期版本的 Outlook。 在早期版本的 Outlook 中,/safe 开关仅禁用 (ECE) 的 Microsoft Exchange 客户端扩展。 在 Outlook 2007 中,/safe 开关还阻止 COM 加载项加载。 自 Office 2000 以来,此行为一直是其他 Office 应用程序中的行为。

若要在 Outlook 2007 中访问“共享文件夹中的允许脚本 ”选项和 “允许在公用文件夹中的脚本 ”选项,请执行以下步骤:

  1. “工具” 菜单上,选择 “信任中心”。
  2. 在导航窗格中,选择 “电子邮件安全性”。

请注意,“ 共享文件夹中的允许脚本 ”选项和 “允许在公用文件夹中的脚本 ”选项位于 “文件夹中的脚本”下。

新的 DontDisplayHKLMAddins 注册表项隐藏 COM 加载项

在 Outlook 2007 中 DontDisplayHKLMAddins ,可以使用注册表项隐藏在密钥下注册的 HKEY_LOCAL_MACHINE COM 加载项。 隐藏这些 COM 加载项时,用户无法卸载它们。 启用 DontDisplayHKLMAddins 注册表项时,Outlook 2007 的行为与早期版本的 Outlook 相同。

若要 DontDisplayHKLMAddins 添加注册表项,请执行以下步骤:

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

  2. 找到并右键单击子项 HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Outlook\Security

  3. 指向 “新建”,然后选择 “DWORD 值”。

  4. 入 DontDisplayHKLMAddins,然后按 ENTER。

  5. 右键单击 DontDisplayHKLMAddins,然后选择 “修改”。

  6. “值数据 ”框中,键 入 1 以隐藏在密钥下 HKEY_LOCAL_MACHINE 注册的 COM 加载项,然后选择 “确定”。

    注意

    如果在“值数据”框中键入 0,或者将“值数据”框留空,则会显示 COM 加载项。

  7. 退出注册表编辑器,然后重启计算机。

当选择注册表项等于 1 时,所有 COM 加载项仍显示在信任中心中。 此注册表设置仅在 COM 加载项对话框中隐藏已注册 HKLM 的 COM 加载项。 这应该可以接受,因为只能使用 COM 加 载项对话框加载和卸载加载项。

新的 DisableCreateServices 注册表项阻止特定 MAPI 服务加载

管理员可以在密钥下HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Outlook\Options创建DisableCreateServices注册表项。 此注册表项在 Outlook 2007 中是新的。 可以使用 DisableCreateServices 注册表项阻止特定 MAPI 服务加载。

注册 DisableCreateServices 表项存储字符串值。 字符串值是 MAPI 服务的分号分隔列表。 服务的名称是 Mapisvc.inf 文件中显示的 MAPI 名称。 例如,如果下面是 Mapisvc.inf 文件中的子集,则可以在注册表条目中 DisableCreateServices 使用 MSOMS;OMSAB 的字符串值以防止用户添加这两个服务。

[Services]
MSOMS=Outlook Mobile Service
OMSAB=Mobile Address Book

[Default Services]
MSOMS=Outlook Mobile Service
OMSAB=Mobile Address Book

在自定义解决方案的上下文中,开发人员应注意,组织现在可以部署可能限制使用 MAPI 服务的策略。

在某些情况下,自定义属性可能不会传播

Microsoft AllowNamedProps Office Outlook 2003 Service Pack 2 (SP2) 中引入了注册表项。 此密钥存储可在 Outlook 中使用的自定义属性列表。 有关详细信息,请参阅 Outlook 中自定义属性的更改

Microsoft 知识库文章907985还介绍了以下注册表项:

  • AllowTNEFtoCreateProps
  • AllowMSGFilestoCreateProps
  • DisallowTNEFPreservation

Outlook 2007 不再支持这三个注册表项。

对自定义上下文菜单的支持有限

Outlook 2007 支持自定义 Outlook 的一些本机上下文菜单。 有关详细信息,请参阅 如何:自定义项上下文菜单

当用户右键单击邮件或备注字段 (“正文”属性) 项时,无法自定义 Word 的上下文菜单。 此功能在 Microsoft Word 的更高版本中提供。

Outlook Today 正在弃用

建议开发人员不要自定义 Outlook Today 页面。 此功能正在弃用。 仅出于向后兼容性原因而维护它。

不再支持 Visual Basic 6.0 MAPI 控件

Microsoft Visual Basic 6.0 包含两个 MAPI 控件,这些控件使用简单 MAPI 来提供与基于 MAPI 的电子邮件应用程序的集成。 这些控件未通过 Outlook 2007 进行测试。 但是,Outlook 2007 中的这些控件至少有一个主要已知问题。 不支持将这些控件与 Outlook 2007 配合使用。

Outlook 协议不再在 Outlook 外部工作

Outlook://) (Outlook 协议已更改。 此协议仅在 Outlook 中使用时才有效。 可以在文件夹主页、Web 工具栏或 Outlook 项正文中使用此协议。

注意

在任何项的正文中键入协议时,Outlook 不会自动识别 Outlook 协议。 但是,如果将其设置为超链接,则协议有效。

协作数据对象 1.2.1 不再包含在 2007 Office 系统中

协作数据对象 (CDO) 1.2.1 是一个包,可通过基于 COM 的 API 访问与 Outlook 兼容的对象。 如果可以,建议开发人员使用 Outlook 对象模型,而不是使用 CDO 1.2.1。

注意

此版本的 CDO 是为Microsoft Exchange Server创建的。 因此,使用 CDO 以编程方式访问收件人信息或发送电子邮件时,此版本的 CDO 不会为 Outlook 对象模型生成防护安全提示。 由于此行为,Outlook 2007 中对安全设置的新组策略支持不适用于 CDO。

为 Outlook 开发附件预览处理程序

Outlook 2007 允许你在查看电子邮件时预览某些类型的附加文件。 2007 Office 系统中的 Outlook 和其他应用程序使用 Windows Vista 使用的同一 API 体系结构。 有关如何创建预览处理程序的信息,请参阅 生成预览处理程序

Web 窗体功能已删除

不能使用 Outlook 2007 连接到 Microsoft Exchange Server 5.5。 此外,Exchange Server 5.5 Web 窗体呈现功能已从“选项”对话框中删除。 若要访问此功能,请执行以下步骤:

  1. “工具” 菜单上,选择 “选项”,然后选择“ 其他 ”选项卡。
  2. “常规”下,选择 “高级选项”。
  3. 在所有 Microsoft Office 程序下,选择“自定义窗体”。

默认情况下,MAPI 窗体不再打开

默认情况下,Outlook 2007 不会打开使用 C++创建的 MAPI 表单。 若要启用此功能,请执行以下步骤:

  1. “工具” 菜单上,选择 “选项”,然后选择“ 其他 ”选项卡。
  2. “常规”下,选择 “高级选项”。
  3. 在所有 Microsoft Office 程序下,选择“自定义窗体”。
  4. 选中 绕过 Outlook 的“允许”窗体 复选框。

不再支持 DisableAddinBtns 策略密钥

早期版本的 Outlook 支持策略 DisableAddinBtns 密钥。 可以使用此策略密钥禁用加载项的按钮。禁用按钮时,用户无法在 Outlook 中加载或卸载 Exchange 客户端扩展。 Outlook 2007 不再支持此策略密钥。

默认情况下,在HKEY_LOCAL_MACHINE密钥中注册的 COM 加载项不再隐藏

可以在或密钥中HKEY_CURRENT_USER keyHKEY_LOCAL_MACHINE注册 COM 加载项。 在早期版本的 Office 中,在密钥中 HKEY_CURRENT_USER 注册的加载项将显示在 COM 加载项窗口中。 但是,在密钥中 HKEY_LOCAL_MACHINE 注册的加载项不会显示在 COM 加载项窗口中。 此行为允许开发人员和管理员在密钥中 HKEY_LOCAL_MACHINE 注册加载项,以便用户无法删除外接程序。

2007 Microsoft Office 系统会更改此默认行为。 信任中心和 COM 加载项窗口列出所有已注册的加载项。如果管理员想要隐藏在密钥中 HKEY_LOCAL_MACHINE 注册的加载项,则可以部署策略密钥以启用早期行为。

若要隐藏在密钥中 HKEY_LOCAL_MACHINE 注册的加载项,请执行以下步骤:

  1. 选择“开始”,选择“运行”,在“打开”框中键入“regedit”,然后选择“确定”
  2. 找到并右键单击子项 HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Outlook\Security
  3. 指向 “新建”,然后选择 “DWORD 值”。
  4. 入 DontDisplayHKLMAddins,然后按 ENTER。
  5. 右键单击 DontDisplayHKLMAddins,然后选择 “修改”。
  6. “值数据 ”框中,键入 1 以隐藏在密钥中注册的 HKEY_LOCAL_MACHINE 加载项。 选择“确定”。
  7. 退出注册表编辑器,然后重启计算机。

不再支持管理服务器端Exchange Server脚本

在早期版本的 Outlook 中,可以在文件夹的“属性”中的“代理”选项卡上管理Exchange Server脚本。 Exchange Server 5.5 及更高版本的Exchange Server支持这些服务器端脚本。 代理选项卡由 Outlook 安装的 Exchange 客户端扩展 (Scrptxtn.dll) 提供。 此外,这些脚本依赖于Microsoft Exchange Server事件服务配置对象库 (Esconf.dll) 。

Outlook 2007 中不包括Scrptxtn.dll文件和Esconf.dll文件。 因此,无法在 Outlook 2007 中安装、卸载和管理服务器端Exchange Server脚本。 如果必须具有此功能,则必须使用早期版本的 Outlook。

注意

Exchange 2000 服务器引入了更可靠的事件接收器功能,旨在替换Exchange Server脚本。 “ 代理” 选项卡与事件接收器无关。 此外,由于事件接收器已提供一段时间,因此此设计更改的效果应最小。

Exchange 客户端扩展正在弃用

Microsoft Windows 95 中Exchange Server客户端最初支持 Exchange 客户端扩展 (ECE) 体系结构。 Outlook 97 还支持 Exchange 客户端扩展。 Outlook 的更高版本(包括 Outlook 2007)仍出于向后兼容性原因支持 EC。 但是,现在强烈建议开发人员使用 COM 外接程序体系结构来构建新的 Outlook 加载项。Outlook 2007 中的许多更改已作为“ECE 奇偶校验”功能实现。 由于 Outlook 现在具有这些功能,因此可能会停止对 Exchange 客户端扩展的支持。

Exchange 客户端扩展未正确处理To-Do条选择

Outlook 2007 的新To-Do条功能并非旨在处理 Exchange 客户端扩展在 OnSelectionChange 事件中跟踪所选文件夹和项的方式。 这是 Outlook 2007 中 EC 的限制。 开发人员应改为在 Outlook 对象模型中使用 Selection 对象。