Объектная модель Outlook непригодна для запуска в службе Windows

Исходный номер базы знаний: 237913

Сводка

Объектная модель Outlook (OOM) непригодна для использования из приложения, которое предназначено для запуска от имени или порождения приложением службы Windows. Сюда входят приложения ASP, которые выполняются в службе IIS, и приложения, которые выполняются вместе со службами планировщика AT или планировщика задач.

OOM — это модель автоматизации для Outlook, которая предназначена для запуска в сеансе вошедшего пользователя, в котором пользователь может отвечать на диалоговые окна.

Это ограничение конструктора Outlook.

Дополнительная информация

OOM имеет четыре основных ограничения, которые делают ее непригодной для использования в приложении службы Windows следующим образом:

  • MAPI сохраняет профили для каждого пользователя в HKEY_CURRENT_USER кусте реестра. Этот куст реестра не загружается при запуске приложения службы Windows. Эта конкретная проблема может быть обманчивой, так как во время цикла разработки разработчик входит в систему в интерактивном режиме. Это приводит к загрузке HKEY_CURRENT_USER куста, чтобы все работало должным образом. После тестирования службы без интерактивного входа владельца профиля службе не удается найти профиль.

  • Только один экземпляр Outlook (приложение, которое экспортирует объектную модель Outlook) может выполняться одновременно в контексте одного пользователя с помощью одного профиля. Если один и тот же пользователь пытается войти с помощью второго профиля, при этом пользователь присоединяется к существующему сеансу Outlook. Если пользователь пытается запустить другую копию Outlook (или OOM) из другого контекста пользователя, попытка завершается ошибкой. Например, если приложение олицетворяет другого пользователя, например приложение службы Windows, попытка завершается ошибкой. Этот сбой приводит к непредсказуемым результатам, таким как модальное диалоговое окно или ошибка приложения, из-за чего Outlook перестает отвечать на запросы системы.

  • OOM всегда запускает диспетчер очереди MAPI во время входа. Клиентские приложения MAPI, которые выполняются как приложения службы Windows, должны следовать нескольким ограничениям при входе в подсистему MAPI. Так как Outlook не предназначен для работы в качестве приложения службы Windows, эти соглашения не соблюдаются.

    Дополнительные сведения см. в статье Общие сведения о приложениях-службах Windows.

  • Некоторые действия, использующие OOM, вызывают модальные диалоговые окна, которые невозможно предотвратить и которые требуют вмешательства пользователя. Это приведет к зависаю приложения.

Мы рекомендуем использовать расширенный код MAPI вместо OOM в приложениях службы Windows. Если код не должен работать с Outlook напрямую и вместо этого может выполняться в почтовом ящике Exchange, следует рассмотреть возможность использования API Exchange, таких как Graph, Exchange REST и веб-службы Exchange (EWS).

Справочные материалы

Дополнительные сведения см. в статье Рекомендации по автоматизации Office на стороне сервера.