Le modèle objet Outlook n’est pas approprié pour s’exécuter dans un service Windows

Numéro de la ko d’origine :   237913

Synthèse

Le modèle objet Outlook (OOM) n’est pas approprié pour une utilisation à partir d’une application conçue pour être exécuté en tant qu’application de service Windows ou généré par celui-ci. 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 de planification AT ou de Planification des tâches.

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.

Plus d’informations

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

  • MAPI stocke les profils de chaque utilisateur sous la HKEY_CURRENT_USER ruche du Registre. Cette ruche du Registre n’est pas chargée lorsqu’une application de service Windows s’exécute. Ce problème particulier peut être particulièrement problématique car, pendant un cycle de développement, le développeur est inscrit au système de manière interactive. Cela entraîne le chargement de la ruche afin HKEY_CURRENT_USER que tout fonctionne comme prévu. Une fois que le service est testé sans que le propriétaire du profil ne 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 contexte utilisateur à l’aide d’un seul profil. Si le même utilisateur tente de se connecter à l’aide d’un second 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 usurpe l’identité d’un autre utilisateur, tel qu’une application de service Windows, la tentative échoue. Cet échec a des résultats imprévisibles, tels qu’une boîte de dialogue modale ou une erreur d’application qui provoque l’arrêt de la réponse d’Outlook au système.

  • OOM démarre toujours lepooler MAPI lors de l’logon. Les applications clientes MAPI qui s’exécutent en tant qu’applications de service Windows doivent respecter plusieurs limitations lorsqu’elles se sont ouvertes au sous-système MAPI. Comme Outlook n’a pas été conçu pour s’exécuter en tant qu’application de service Windows, ces conventions ne sont pas respectées.

    Pour plus d’informations, voir Introduction aux applications de service Windows.

  • Certaines actions qui utilisent le modèle OOM lèvent des boîtes de dialogue modales qui ne peuvent pas être empêchées et qui nécessitent l’intervention de l’utilisateur. L’application semble alors se bloquer.

Nous vous recommandons d’utiliser du code MAPI étendu au lieu du 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 les services web Exchange (EWS).

Référence

Pour plus d’informations, voir Considérations pour l’automatisation côté serveur d’Office.