Получение / Создание приложения Outlook в Windows 7 - PullRequest
15 голосов
/ 20 сентября 2010

Я пытаюсь получить текущую работающую версию Outlook или запустить Outlook в случае, если он не работает , но у меня возникают некоторые проблемы при получении или создании объекта приложения Outlook в Windows 7.Я думаю, что это как-то связано с ограничениями прав доступа пользователей в Vista и 7. Я работаю с Outlook 2010.

edit: Эти ошибки появляются, только если у меня уже есть Outlook2010 год начался.Если Outlook не запущен, приложение может работать без сбоев (оно может запускать экземпляр Outlook самостоятельно).

Если кто-нибудь подскажет, как правильно получить версию приложения Outlook, это было бы очень полезно.

Код, который я запускаю, представляет собой длинный блок try-catch, который продолжает вызывать исключения:


try
{
  // create an application instance of Outlook
  oApp = new Microsoft.Office.Interop.Outlook.Application();
}
catch(System.Exception ex)
{
  try
  {
     // get Outlook in another way
     oApp = Marshal.GetActiveObject("Outlook.Application") as Microsoft.Office.Interop.Outlook.Application;
  }
  catch (System.Exception ex2)
  {
     // try some other way to get the object
     oApp = Activator.CreateInstance(Type.GetTypeFromProgID("Outlook.Application")) as Microsoft.Office.Interop.Outlook.Application;
  }
}

Приложение выдает мне следующие исключения:

Когда я пытаюсьсоздать новый экземпляр приложения Outlook:

Не удалось получить фабрику класса COM для компонента с CLSID {0006F03A-0000-0000-C000-000000000046} из-за следующей ошибки: 80080005.

Когда япопробуйте получить экземпляр приложения Outlook:

Операция недоступна (Исключение из HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))

Когда я пытаюсь создать экземпляр через активатор

ПолучениеФабрика класса COM для компонента с CLSID {0006F03A-0000-0000-C000-000000000046} не выполнена из-за следующей ошибки: 80080005.

Спасибо!

Ответы [ 5 ]

31 голосов
/ 23 сентября 2010

Видимо, эти ошибки были вызваны тем, что я запустил Outlook и приложение на разных уровнях разрешений пользователей (один из них как администратор, а другой как обычный пользователь).

3 голосов
/ 30 сентября 2012
  1. В меню Пуск выберите Выполнить
  2. Введите dcomcnfg и нажмите ОК
  3. Откроется окно Службы компонентов.
  4. Разверните узлы Службы компонентов -> MyComputer -> Конфигурация DCOM.
  5. Щелкните правой кнопкой мыши на приложении (Outlook Message Attachment) и выберите свойства.
  6. Нажмите на вкладку «Идентичность».
  7. Нажмите «Интерактивный пользователь», затем OK
1 голос
/ 20 сентября 2010

Похоже, что ваша установка Office была повреждена.

Попробуйте восстановить установку, повторно запустив установку от имени администратора.

0 голосов
/ 31 декабря 2014

Это правда, что если вы запускаете отдельное приложение из Visual Studio или отлаживаете из Visual Studio, использующей офисные продукты, у вас должен быть одинаковый уровень доступа для обоих (продуктов Visual Studio и Office), и это одна из причин почему возникает эта проблема, но я вижу в Интернете, что у многих людей возникает эта проблема при инициализации объекта Outlook в службе. Я надеюсь, что решение этой проблемы для меня поможет и другим. Пожалуйста, следуйте инструкциям.

  1. Перейдите в командную строку, введите следующее и нажмите ввод. Откроется Служба компонентов:

    mmc comexp.msc / 32

enter image description here

enter image description here

  1. Разверните узлы Службы компонентов -> MyComputer -> Конфигурация DCOM

  2. Теперь найдите нужное приложение (в данном случае вложение сообщений Outlook) и щелкните приложение правой кнопкой мыши (если вы выполните следующие действия, эта проблема, связанная со всеми офисными приложениями, может быть решена) и выберите свойства.

  3. Перейдите на вкладку Identity, выберите интерактивного пользователя и нажмите OK. Это должно решить вашу проблему.

enter image description here

Интерактивный пользователь - не что иное, как зарегистрированный пользователь. Когда вы пытаетесь получить доступ к офисным продуктам через сервис, уровень доступа должен быть одинаковым, и именно поэтому вам необходимо указать подходящего пользователя. Если вы хотите запустить службу на сервере без входа в систему, вам необходимо убедиться, что на сервере есть учетная запись пользователя, которая будет использоваться для запуска службы, а также для запуска офисных продуктов, как указано в Свойствах как Этот пользователь (пожалуйста, посмотрите на диалоговое окно Свойства). Если вы хотите узнать о различных типах учетных записей пользователей, упомянутых в этом диалоговом окне, перейдите по следующей ссылке Microsoft.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms692541%28v=vs.85%29.aspx

0 голосов
/ 07 апреля 2014

В моем случае это была проблема с тем, что Visual Studio запускалась от имени администратора. Когда я запустил его как обычный пользователь, я наконец избавился от этой ошибки.

...