メール/メッセージを送信するための MAPI プロファイルを作成するアプリケーションがあります。Outlook2007 環境ではプロファイルが正しく作成されていますが、Outlook2007 SP2 環境ではプロファイルが正しく作成されていません。ソースコードも「MAPI/outlookプロファイルの交換環境」も同じです。プロファイルは、MAPI サブシステムを使用して作成されます。
アプリケーションについての説明: アプリケーションは、Windows サービス ベースのアプリケーションです。サービスは、COM アプリケーションを実行します。COM アプリケーションは新しいスレッドを生成して新しいプロファイルを作成し、サンプル メッセージを送信します。
実際の問題: プロファイルの作成中に、ConfigureMsgService 関数 (IMsgServiceAdmin に属する) の呼び出しが、S_OK を返しても正しく機能しません。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 関数呼び出しの前に、MAPIInitialize、MAPIAdminProfiles、CreateProfile、AdminServices、CreateMsgService、GetMsgServiceTable などの他のすべての MAPI 呼び出しが成功することにも注意してください。
私の質問ですが、同じコードが Outlook 2007 環境では正常に動作していましたが、Outlook 2007 SP2 環境では失敗しました。
1. スタンドアロン アプリケーションから同じコードを実行すると、正常に動作しました。2. サービスがローカル システム アカウントまたはネットワーク サービス アカウントとして実行されている場合、コードは正しく機能しませんでした。
- 何が問題なのですか?私は何かが欠けていますか?
- 回避策はありますか?
よろしくお願いします