Не удалось получить фабрику класса COM для компонента - PullRequest
22 голосов
/ 19 мая 2009

Я использую объект Excel (компонент COM) для манипуляций с Excel. Он отлично работает на моем ПК, но при развертывании приложения в нашей интрасети я получаю эту ошибку:

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

Я использую проверку подлинности Windows и олицетворение = true в моем web.config.

Я сделал все настройки в компонентной службе, но все равно выдает ту же ошибку.

Пожалуйста, помогите

Ответы [ 9 ]

22 голосов
/ 19 августа 2014

У меня была такая же ошибка при развертывании моего приложения. У меня есть решение с этого сайта: Сбой компонента с CLSID XXX из-за следующей ошибки: 80070005 Отказано в доступе

Вот это решение:

  1. В DCOMCNFG , щелкните правой кнопкой мыши Мой компьютер и выберите Свойства .

  2. Выберите вкладку COM Securities .

  3. В Права доступа , нажмите Изменить значения по умолчанию и добавьте Сетевой сервис к нему и предоставьте ему Разрешить локальный доступ разрешение , Сделайте то же самое для \ Users .

  4. В Разрешения на запуск и активацию , нажмите Изменить значения по умолчанию и добавьте Сетевой сервис к нему и введите Локальный запуск и Локальная активация разрешение. Сделайте то же самое для \ Users .

* Я использовал аутентификацию по формам.

5 голосов
/ 07 июля 2009

Есть еще одна проблема, которую вам, возможно, придется решить, если вы используете Windows 2008 Server с IIS7 . Сервер может сообщить о следующей ошибке:

Microsoft Office Excel не может получить доступ к файлу 'c: \ temp \ test.xls'. Есть несколько возможных причин:

  • Имя файла или путь не существует.
  • Файл используется другой программой.
  • Книга, которую вы пытаетесь сохранить, имеет то же имя, что и текущая открытая книга.

Решение размещено здесь (см. Текст, опубликованный пользователем Ogawa): http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91?prof=required

4 голосов
/ 02 марта 2011

Вы также получите эту ошибку, когда в системе есть устаревшие EXCEL.EXE процессы (используйте вкладку Task Manager --> Processes для просмотра.)

Убейте все эти экземпляры, и приложение будет работать нормально.

3 голосов
/ 12 февраля 2011

Это помогло мне: (решение с форума msdn )

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

щелкните правой кнопкой мыши, чтобы открыть диалоговое окно свойств. Перейдите на вкладку Безопасность и настройте соответствующие разрешения.

В разрешениях на запуск и применение выберите «Настройка», «Редактировать». Добавьте пользователя / группу, которая вызывает приложение.

2 голосов
/ 30 июля 2010

В случае, если это кому-нибудь поможет:

Я использую 64-битную Windows 7 и хочу зарегистрировать 32-битную DLL.

Сначала я попробовал: regsvr32 и получил следующую ошибку:

System.Runtime.InteropServices.COMException (0x80040154): получение фабрики классов COM для компонента с CLSID {A1D59B81-C868-4F66-B58F-AC94A4A7982E} не удалось из-за следующей ошибки: 80040154.

Затем я попытался добавить приложение через Службы компонентов (Run-> DCCOMCNFG) (http://www.justskins.com/forums/difference-registering-dll-using-regsvr32-and-component-services-17280.html)) и получил следующую ошибку:

System.UnauthorizedAccessException: получение фабрики классов COM для компонента с CLSID {A1D59B81-C868-4F66-B58F-AC94A4A7982E} не удалось из-за следующей ошибки: 80070005.

Есть много ссылок на ее решение, но у меня получилось: Корень консоли -> Службы компонентов -> Компьютеры -> Мой компьютер -> Приложения COM + -> your_application_name -> Свойства: вкладка «Безопасность»: Авторизация: снимите флажок «Принудительно проверять доступ для этого приложения».

Я не знаю, что он делает.

0 голосов
/ 04 января 2019

Я выполнил следующие действия на сервере IIS 8.5 (Windows Server 2012 R2) и работал в моем случае без перезагрузки:

  1. Выбор пула приложений, подключенных к приложению в IIS

  2. И щелкните правой кнопкой мыши -> Дополнительные параметры -> Модель процесса -> Выбрать Локальная система Вместо рекомендуемого ApplicationPoolIdentity

  3. И убедитесь, что C: \ Windows \ SysWOW64 \ config \ systemprofile \ desktop имеет достаточный доступ для пользователей.

  4. Обновить ссылку на веб-сайт, связанный с этим пулом


enter image description here

0 голосов
/ 23 мая 2017

Я могу понять твою боль. В моем случае ошибка была устранена путем выполнения следующих шагов:

  1. Пуск> Выполнить> dcomcnfg.
  2. Откройте папку Настройка DCOM и выберите Службы компонентов> Компьютеры> Мой компьютер> Настройка DCOM.
  3. Выберите «Документ Microsoft Office Word 97 - 2003» / «Приложение Microsoft Excel» и перейдите к его свойствам.
  4. На вкладке «Безопасность» необходимо настроить «Права на запуск и активацию» (Авторизованный пользователь).
  5. Теперь перейдите в IIS и выберите пул приложений в Интернете, перейдите к его расширенным настройкам и выберите «СЕТЕВОЙ СЕРВИС» в качестве удостоверяющего пользователя.

Надеюсь, это поможет.

0 голосов
/ 01 ноября 2014

Для IIS 8 я сделал в основном то же самое, что и Monic. Я запускаю свое приложение как собственный пул приложений на компьютере с архитектурой x64. 1. В DCOMCNFG щелкните правой кнопкой мыши на «Мой компьютер» и выберите свойства.

2. Выберите вкладку COM Securities.

3.В разделе «Права доступа» нажмите «Изменить значения по умолчанию», добавьте в него iis apppool \ myapp и дайте ему разрешение «Разрешить локальный доступ». Сделайте то же самое для iis apppool \ myapp

4.В разрешениях на запуск и активацию нажмите «Изменить значения по умолчанию», добавьте в него iis apppool \ myapp и дайте ему разрешение «Локальный запуск» и «Локальная активация». Сделайте то же самое для iis apppool \ myapp.

дополнительно мне пришлось сделать папки, обозначенные в C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop, и дать разрешения на чтение \ запись в iis apppool \ myapp также

0 голосов
/ 02 декабря 2013

CLSID, который вы описываете, предназначен для Microsoft.Office.Interop.Excel.ApplicationClass. Этот класс в основном запускает Excel.exe через InprocServer32. Если он не установлен, он вернет сообщение об ошибке, которое вы получили выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...