Подтвердить что ты не робот

System.UnauthorizedAccessException: получение фабрики классов COM для Word Interop завершается с ошибкой 80070005

У меня проблема с проектом С# ASP.NET в Visual Studio 2008 Эта проблема началась, когда я переустановил свой компьютер с Windows 7 Ultimate (x64). Для этого я также использую Office 2007.

Я получаю сообщение об ошибке:

System.UnauthorizedAccessException: получение фабрики классов COM для компонента с CLSID {000209FF-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80070005.    в xxx.Utility.WordDocument..ctor(String filePath, HttpServerUtility util)    на customer_communication.BuCreate_click (Отправитель объекта, EventArgs e) в c:\xxx\Website\customer\communication.aspx.cs: строка 127

4b9b3361

Ответ 1

Вот мое исправление для этой проблемы:

Я использую Win 7 64bit и Office 2007

Запустить программу " dcomcnfg -32". (Вы не можете найти слово и компоненты excel, если оно работает под 64 бит)

Перейдите в раздел "Консоль Root/Компонентные услуги/Компьютер/Мой компьютер /DCOM Config/" Найдите Microsoft Word и Excel и выберите свойства.

Перейдите в раздел Безопасность и выберите "Настроить" в разделе "Разрешения конфигурации". (При необходимости вы можете также изменить другие разрешения, но мне не нужно было) Добавьте "IIS_IUSRS" и дайте ему "Полный контроль".

Теперь перейдите к "Идентичность" и выберите "Интерактивный пользователь".

Не забудьте нажать "ОК", когда закончите.: D

Надеюсь, это поможет вам с вашей проблемой, а также с остальными, кто попадает сюда и читает это.

Ответ 2

Вам следует предоставить доступ к компоненту Word COM для идентификации процесса ASP.NET({MACHINE}\ASPNET в IIS 5 или сетевой службе на IIS 6):

"Панель управления - Средства администрирования - Службы компонентов - Компьютеры - Мой компьютер - Конфигурация DCOM"

Узнайте "Microsoft Word Document", щелкните правой кнопкой мыши - "Настройки" - вкладку "Безопасность", предоставите доступ (локальный и удаленный) для идентификации процесса ASP.NET( "ASPNET" для IIS 5, "Сетевая служба" для IIS 6).


Если вы получите "System.Runtime.InteropServices.COMException(0x800A13E9): недостаточно памяти. Сохраните документ сейчас". исключение при открытии/добавлении документа (мой собственный опыт), просто удалите временные файлы из папки% Temp% и\​​Content.Word.

Ответ 3

Этот был липким для меня, чтобы понять, возможно, мои навыки работы с mojo в Windows просто подпадают. Но я не мог заставить Службы компонентов работать в 32-битном режиме на Windows Server 2008. Надеюсь, это может помочь кому-то другому с той же проблемой:

  • Запуск служб компонентов с помощью ранее упомянутого метода ( "Выполнить" или "Администрирование" ); закрыть эту программу
  • Вставьте "C:\Windows\System32\mmc.exe" /32 в поле "Выполнить" и нажмите "Enter" (проверьте в диспетчере задач, что вы видите mmc.exe * 32)
  • Перейдите в файл и вы увидите comexp.msc в списке (из-за шага 1), выберите его, и он откроет Component Services в консоли MMC на 32-битном режиме.

EDIT: для полноты использования, чтобы заставить Word Interop работать в Windows Server 2008, мне также пришлось создать папку рабочего стола, как описано в этом ответе.

Ответ 4

при запуске dcomcnfg -32 или dcomcnfg /32 оба не смогли отобразить целевое приложение (Microsoft Excel) в списке.

Но, следуя указаниям @Как сделать так, чтобы IIS7 хорошо работал с Office Interop, в частности, к примечанию о запуске mmc -32 и ручном добавлении оснастки "Службы компонентов", я смог получить ее появляются. (ПРИМЕЧАНИЕ: хотя ссылка говорит о IIS7, моя проблема была связана со службой Windows).

  1. Пуск> Выполнить> dcomcnfg (или "mmc -32 ″, а затем добавьте оснастку" Службы компонентов "вручную, если не удается найти приложение на шаге 3)
  2. Перейдите к Службам компонентов> Компьютеры> Мой компьютер> Конфигурация DCOM
  3. Найдите приложение MS, вызывающее проблемы (например, "Приложение Microsoft Excel" для Excel или "Документ Microsoft Word 97 - 2003" для Word)
  4. Щелкните правой кнопкой мыши> Свойства
  5. На вкладке "Безопасность": выберите "Настроить" в разделе "Разрешения на запуск и активацию" и нажмите "Изменить..."
  6. Добавьте учетную запись, под которой работает сайт (например, Сетевая служба), и назначьте Local Launch & Разрешения локальной активации
  7. Вуаля!

Ответ 5

Это сработало для меня:

  • В командной строке введите DCOMCNFG
  • Службы компонентов → Компьютеры → Мой компьютер → Конфигурация DCOM
  • Найдите "Документ Microsoft Word 97 - 2003" (если он отсутствует, проверьте, не является ли ваше Word также 64-разрядным)
  • Щелкните правой кнопкой мыши → Свойства
  • Перейдите на вкладку "Безопасность" и "Редактируйте" переключатели "Настроить", чтобы IIS_IUSRS мог иметь права на запуск и доступ.
  • Перейдите в "Идентификатор табуляции" и выберите "Интерактивный пользователь"
  • Применить изменения и повторить попытку
  • Если все это не удается, перейдите также к вкладке "Общие" и в раскрывающемся списке "Уровень аутентификации" выберите "Нет".

Ответ 6

Исправьте ответ Tomas, правильная команда на Windows Server 2k8 x64: "dcomcnfg/32" (слэш вместо -)

Также мне пришлось настроить все параметры безопасности, добавив IIS_IUSRS с полными правами на разрешения на переключение и разрешение доступа, разрешения доступа и разрешения. И интерактивный пользователь на вкладке "Идентификация". Тогда это сработало для меня.

У меня возникла проблема с открытыми документами Word 2010, и мне пришлось установить его для Microsoft Document 97-2003 Document Properties.

Ответ 7

Эта ошибка соответствует .NET System.UnauthorizedAccessException и обычно вызвана неправильными настройками доступа к COM-компоненту, который пытается создать ваш код.

Вы можете попытаться запустить утилиту dcomcnfg, перейти к настройкам DCOM, выбрать нужный объект и разрешить доступ к нему для учетной записи вашего кода ASP.NET. Он должен решить вашу проблему.

Ответ 8

У меня была такая же проблема, в конце концов, потому что у моего пользователя не было разрешения на запуск службы "Remote Procedure Call (RPC)". В панели управления, в административных средствах я искал эту службу и в журнале "Вход в систему" ​​я нажал "Локальная системная учетная запись", я перезапустил систему и устранил проблему.

Ответ 9

Я тестирую все вышеописанные методы, которые также отмечены как ответ, но на сервере Windows, когда пользователь не активен или выходит из системы, получить исключение доступа. так:

  • Я создал пользователя на локальном компьютере и добавил его в две группы: IIS_USER и Администратор
  • Службы компонентов → Компьютеры → Мой компьютер → Конфигурация DCOM
  • В com + object я изменяю для запуска компонента Microsoft Word 97 - 2003 с этим пользователем. Смотрите здесь
  • также добавьте IIS_USER, а также пользователь Application-identity ( IIS APPPool\[Name]) ко всем трем разделам раздела безопасности и сделать все возможное. Посмотрите здесь

офис будет запускаться с настройками пользователя, созданного на первом шаге, поэтому, если вы измените какие-либо настройки с этим пользователем. 120% Работа без проблем. попробовал 3 разных сервера.

Ответ 10

Перейдите в реестр HKCR>TypeLib>{00020905-0000-0000-C000-000000000046}>8.7>0, затем удалите папку "win32", это ошибка Word COM Class.

Перейдите в реестр HKCR>TypeLib>{00020813-0000-0000-C000-000000000046}>1.9>0, затем удалите папку "win32", это ошибка Excel COM Class.

Попробуйте этот метод, чтобы этот метод решил мою проблему.