Я работаю в компании, которая разрабатывает инструмент CRM и предлагает интеграцию с MS Office (2003 и 2007) из Windows XP в 7. (Я работаю с использованием Win7)
Моя задача - вызвать экземпляр Outlook (используя C #) из этого инструмента CRM, когда пользователь хочет отправить электронное письмо и предварительно заполнить данными инструмента CRM (электронная почта, получатель и т. Д.)
Все это уже отлично работает.
Проблема, с которой я столкнулся, заключается в том, что «объектная модель» в Outlook выдает исключение com
(Операция прервана (Исключение из HRESULT: 0x80004004 (E_ABORT))))
момент, когда я пытаюсь прочитать защищенное значение из mailItem (например, mail.bodyHTML).
Пример фрагмента:
using MSOutlook = Microsoft.Office.Interop.Outlook;
//untrusted Instance
_outlook = new MSOutlook.Application();
MSOutlook.MailItem mail = (MSOutlook.MailItem)_outlook.CreateItem(MSOutlook.OlItemType.olMailItem);
//this where the Exception occurs
string outlookStdHTMLBody = mail.HTMLBody;
Я немного прочитал и знаю, что мой экземпляр Outlook (полученный с помощью нового приложения) считается ненадежным, и, следовательно, включается «omg».
У меня есть обходной путь для разработки:
Я использую VS2010 от имени администратора, и если я запускаю Outlook от имени администратора также - все хорошо. Я полагаю, это связано с тем, что они имеют одинаковые уровни целостности (высокий), а UAC (?) Не жалуется. Но это не тот путь к развертыванию.
Теперь вопрос:
Есть ли способ получить доверенный экземпляр Outlook, чтобы я мог избежать этого исключения?
Я уже читал, что при разработке надстройки Office с использованием VSTO можно получить доверенный экземпляр из события OnComplete и / или с помощью «ThisAddin»
Но я «просто» хочу запустить экземпляр Outlook и предварительно заполнить его, и не хочу разрабатывать надстройку, поскольку это не является обязательным требованием.
И чтобы было понятно - у меня нет проблем с всплывающими окнами, информирующими пользователя о доступе к outlook - я просто хочу избавиться от исключения!
Так, как я могу обойти эту проблему, используя код?
Любая помощь высоко ценится!
Thomas