Outlook オブジェクト モデルは、Windows サービスで実行するのに適していない

元の KB 番号: 237913

概要

Outlook オブジェクト モデル (OOM) は、Windows サービス アプリケーションとして実行または生成されるように設計されたアプリケーションからの使用に適しています。 これには、インターネット インフォメーション サービス (IIS) で実行される Active Server Page (ASP) アプリケーションと、AT Scheduler またはタスク スケジューラ サービスと共に実行されるアプリケーションが含まれます。

OOM は、ユーザーがダイアログ ボックスに応答できるログオン ユーザーのセッションで実行するように設計された Outlook の自動化モデルです。

これは Outlook の設計上の制限事項です。

詳細

OOM には、Windows サービス アプリケーションでの使用に適さない 4 つの大きな制限があります。次に示します。

  • MAPI は、レジストリのハイブの下に HKEY_CURRENT_USER 各ユーザーのプロファイルを格納します。 このレジストリ ハイブは、Windows サービス アプリケーションの実行時には読み込まれません。 この特定の問題は、開発サイクル中に開発者が対話形式でシステムにサインインするため、欺瞞になる可能性があります。 これにより、 HKEY_CURRENT_USER すべてが期待どおりに動作するように Hive が読み込まれます。 プロファイルの所有者が対話形式でログオンせずにサービスをテストした後、サービスはプロファイルの検索に失敗します。

  • 1 つのプロファイルを使用して、1 つのユーザー コンテキストで一度に実行できる Outlook のインスタンス (Outlook オブジェクト モデルをエクスポートするアプリケーション) は 1 つだけです。 同じユーザーが 2 つ目のプロファイルを使用してサインインしようとすると、ユーザーは既存の Outlook セッションに参加します。 ユーザーが別のユーザー コンテキストから Outlook (または OOM) の別のコピーを開始しようとすると、試行は失敗します。 たとえば、アプリケーションが Windows サービス アプリケーションなどの別のユーザーを偽装した場合、試行は失敗します。 このエラーには、モーダル ダイアログ ボックスや、Outlook がシステムへの応答を停止するアプリケーション エラーなど、予期しない結果が発生します。

  • OOM は、ログオン中に常に MAPI スプーラーを起動します。 Windows サービス アプリケーションとして実行される MAPI クライアント アプリケーションは、MAPI サブシステムにサインインするときにいくつかの制限に従う必要があります。 Outlook は Windows サービス アプリケーションとして実行するように設計されていないため、これらの規則に従っていません。

    詳細については、「 Windows サービス アプリケーションの概要」を参照してください。

  • OOM を使用する一部のアクションでは、防止できず、ユーザーの介入が必要なモーダル ダイアログ ボックスが発生します。 これにより、アプリケーションがハングしているように見えます。

Windows サービス アプリケーションでは、OOM の代わりに拡張 MAPI コードを使用することをお勧めします。 コードが Outlook を直接操作する必要がない場合、代わりに Exchange のメールボックスに対して実行できる場合は、Graph、Exchange REST、Exchange Web Services (EWS) などの Exchange API の使用を検討する必要があります。

リファレンス

詳細については、「 Office のサーバー側オートメーションに関する考慮事項」を参照してください。