Le modèle objet Outlook ne peut pas s’exécuter dans un service Windows

Numéro de la base de connaissances d’origine : 237913

Résumé

Le modèle objet Outlook (OOM) ne peut pas être utilisé à partir d’une application conçue pour être exécutée ou engendrée par une application de service Windows. Cela inclut les applications ASP (Active Server Page) qui s’exécutent sous Internet Information Service (IIS) et les applications qui s’exécutent avec les services AT Scheduler ou Task Scheduler.

OOM est un modèle d’automatisation pour Outlook conçu pour s’exécuter dans une session d’utilisateur connecté dans laquelle un utilisateur peut répondre aux boîtes de dialogue.

Il s’agit d’une limitation inhérente à la conception d’Outlook.

Informations supplémentaires

OOM présente quatre limitations majeures qui le rendent impropre à une utilisation dans une application de service Windows, comme suit :

  • MAPI stocke les profils pour chaque utilisateur sous la HKEY_CURRENT_USER ruche du registre. Cette ruche de Registre n’est pas chargée lorsqu’une application de service Windows s’exécute. Ce problème particulier peut être trompeur, car, pendant un cycle de développement, le développeur est connecté au système de manière interactive. Cela entraîne le chargement de la HKEY_CURRENT_USER ruche afin que tout fonctionne comme prévu. Une fois le service testé sans que le propriétaire du profil se soit connecté de manière interactive, le service ne parvient pas à localiser le profil.

  • Une seule instance d’Outlook (l’application qui exporte le modèle objet Outlook) peut s’exécuter à la fois dans un seul contexte utilisateur à l’aide d’un seul profil. Si le même utilisateur tente de se connecter à l’aide d’un deuxième profil, cette tentative joint l’utilisateur à la session Outlook existante. Si l’utilisateur tente de démarrer une autre copie d’Outlook (ou OOM) à partir d’un autre contexte utilisateur, la tentative échoue. Par exemple, si une application emprunte l’identité d’un autre utilisateur, comme une application de service Windows, la tentative échoue. Cet échec a des résultats imprévisibles, comme une boîte de dialogue modale ou une erreur d’application qui empêche Outlook de répondre au système.

  • OOM démarre toujours le spouleur MAPI lors de l’ouverture de session. Les applications clientes MAPI qui s’exécutent en tant qu’applications de service Windows doivent respecter plusieurs limitations lorsqu’elles se connectent au sous-système MAPI. Étant donné qu’Outlook n’a pas été conçu pour s’exécuter en tant qu’application de service Windows, ces conventions ne sont pas suivies.

    Pour plus d’informations, consultez Présentation des applications de service Windows.

  • Certaines actions qui utilisent OOM déclenchent des boîtes de dialogue modales qui ne peuvent pas être empêchées et qui nécessitent l’intervention de l’utilisateur. Cela entraînerait le blocage de l’application.

Nous vous recommandons d’utiliser du code MAPI étendu au lieu de OOM dans vos applications de service Windows. Si le code n’a pas besoin de fonctionner directement avec Outlook et peut, à la place, s’exécuter sur la boîte aux lettres dans Exchange, vous devez envisager d’utiliser des API Exchange, telles que Graph, Exchange REST et EWS (Exchange Web Services).

Référence

Pour plus d’informations, consultez Considérations relatives à l’automatisation côté serveur d’Office.