Получение/создание приложения Outlook в Windows 7

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

изменить: Эти ошибки появляются только в том случае, если у меня уже есть экземпляр Outlook 2010. Если 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-класса factory для компонента с CLSID {0006F03A-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80080005.

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

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

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

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

Спасибо!

Ответы

Ответ 1

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

Ответ 2

  • В меню "Пуск" выберите "Выполнить"
  • Введите dcomcnfg и нажмите OK
  • Откроется окно "Службы компонентов".
  • Разверните узлы Службы компонентов → MyComputer → DCOM Config.
  • Щелкните правой кнопкой мыши приложение (Outlook Message Attachment) и выберите свойства.
  • Нажмите вкладку "Идентификация", если это необходимо.
  • Нажмите "Интерактивный пользователь", затем "ОК"

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

    mmc comexp.msc/32

enter image description here

enter image description here

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

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

  3. Перейдите на вкладку "Идентификация" и выберите "Интерактивный пользователь" и нажмите "ОК". Это должно решить вашу проблему.

enter image description here

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

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