Исключение из HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED) ⇐ C#

Место общения программистов C#
Anonymous
Исключение из HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)

Сообщение Anonymous »

У меня есть компьютер с установленным MS Office 2010, а MS Outlook установлен из Office 2007.
На этом компьютере следующий код:

Код: Выделить всё

Microsoft.Office.Interop.Outlook.Application myOutlook = new Microsoft.Office.Interop.Outlook.Application();
string theName = myOutlook.Name;
приводит к следующему исключению:


Невозможно привести COM-объект типа
«Microsoft.Office.Interop.Outlook.ApplicationClass» для типа интерфейса
«Microsoft.Office.Interop.Outlook._Application». Эта операция не удалась
, поскольку вызов QueryInterface компонента COM для интерфейса
с IID '{00063001-0000-0000-C000-000000000046}' завершился неудачно из-за
следующей ошибки: Library not зарегистрирован. (Исключение из HRESULT:
0x8002801D (TYPE_E_LIBNOTREGISTERED)).


Я удалил следующую запись реестра, и приведенный выше код был работает нормально. Как только запускаются обновления Windows, приведенная ниже запись вставляется снова, и приведенный выше код снова вызывает исключение.
HKEY_CLASSES_ROOT\TypeLib{00062FFF-0000-0000-C000-000000000046}\9.4

1) Запись реестра не может быть удалена из приложения из-за разрешений

2) Необходимы две офисные версии
3) Строка «string theName = myOutlook.Name;» можно заменить любой строкой, ссылающейся на переменную myOutlook с точно таким же результатом

4) Тот же код прекрасно работает на ПК с установленным MS Office 2007, включая MS Outlook.< /p>

Любое предложение будет высоко оценено.

Подробнее здесь: https://stackoverflow.com/questions/282 ... registered

Вернуться в «C#»