【问题标题】:My application fails to create MAPI/Messaging profile properly using MAPI subsystem我的应用程序无法使用 MAPI 子系统正确创建 MAPI/消息配置文件
【发布时间】:2011-05-21 10:53:09
【问题描述】:

我有一个创建 MAPI 配置文件以发送邮件/消息的应用程序。配置文件在 Outlook2007 环境中正确创建,但在 Outlook2007 SP2 环境中未正确创建。源代码和“MAPI/outlook 配置文件的交换环境”都相同。该配置文件是使用 MAPI 子系统创建的。

关于应用程序的说明:该应用程序是一个基于 Windows 服务的应用程序。该服务执行 COM 应用程序。 COM 应用程序产生一个新线程来创建新配置文件并发送示例消息。

实际问题:在配置文件创建过程中,即使返回 S_OK,对 ConfigureMsgService 函数(属于 IMsgServiceAdmin)的调用也无法正常工作。 ConfigureMsgService函数的第5个参数“lpProps”的值如下所示。

    // First, the mailbox name.
    ZeroMemory(&rgval[0], sizeof(SPropValue) );
    rgval[0].ulPropTag = PR_PROFILE_UNRESOLVED_NAME; 
    rgval[0].Value.lpszA = szMailbox;

    // Next, the server name.
    ZeroMemory(&rgval[1], sizeof(SPropValue) );
    rgval[1].ulPropTag = PR_PROFILE_UNRESOLVED_SERVER;
    rgval[1].Value.lpszA = szServer;

    // For NT Services, need to do this to keep MAPI from
    // displaying dialog boxes.
    ZeroMemory(&rgval[2], sizeof(SPropValue) );
    rgval[2].ulPropTag = PR_CONVERSION_PROHIBITED;  //As the com application is executed by the NT service, this parameter is specified.
    rgval[2].Value.b = TRUE;

另外请注意,在调用 ConfigureMsgService 函数之前,所有其他 MAPI 调用(如 MAPIInitialize、MAPIAdminProfiles、CreateProfile、AdminServices、CreateMsgService、GetMsgServiceTable 等)均已成功。

我的问题,相同的代码在 Outlook 2007 环境中正常工作,但在 Outlook 2007 SP2 环境中失败。

请注意, 1. 从独立应用程序执行相同的代码时,它运行良好。 2. 如果服务作为本地系统帐户或网络服务帐户执行,则代码无法正常工作。

  1. 可能是什么问题?我错过了什么吗?
  2. 是否有任何解决方法?

提前致谢 沙拉湾

【问题讨论】:

    标签: com outlook exchange-server outlook-2007 mapi


    【解决方案1】:

    你的问题在你的笔记的#2中:

    请注意,1.当相同的代码是 从独立执行 应用程序,它工作得很好。 2. 如果代码无法正常工作 服务作为本地系统执行 帐户或作为网络服务 帐户

    MAPI 配置文件存储在注册表中当前用户的配置单元*(HKEY_CURRENT_USER 和 HKEY_USERS{user SID})。系统帐户(LocalSystem 和 NetworkService)不提供 MAPI 需要写入配置文件信息的用户配置单元。

    最简单的解决方法是让您的服务在已被授予“作为服务登录”权限的用户帐户下运行。根据您的 COM 应用程序的运行方式(在 proc 中与在 proc 外),您可能能够让它作为特定用户而不是系统帐户运行。

    *Hive 是用于注册表不同部分的术语。这里我们只处理用户自己的注册表部分。

    【讨论】:

      【解决方案2】:

      感谢您的回复。

      我试过你的想法,但没有奏效。在这种情况下,我与 Microsoft 进行了交谈,他们已针对此问题提供了修复 (http://support.microsoft.com/kb/972363),它已修复。

      沙拉湾

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-23
        • 1970-01-01
        • 1970-01-01
        • 2016-02-29
        • 1970-01-01
        • 2016-05-27
        相关资源
        最近更新 更多