Не удалось получить фабрику класса COM для компонента

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

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

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

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

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

11 ответов

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

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

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

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

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

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

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

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

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

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

В разрешениях на запуск и применение выберите Customize, Edit. Добавьте пользователя / группу, которая вызывает приложение.

Есть еще одна проблема, которую вам, возможно, придется решить, если вы используете 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

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

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

Если это кому-нибудь поможет:

Я использую 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+ -> Ваше имя_приложения -> Свойства: вкладка "Безопасность": Авторизация: Снимите флажок "Принудительно проверять доступ для этого". приложение'.

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

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

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

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

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

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


Я получаю ту же ошибку при попытке экспортировать файл csv из Act! чтобы преуспеть. Я нашел один обходной путь - запустить Act! как администратор.

Это говорит мне, что это, вероятно, проблема с разрешением, но ни один из предыдущих ответов здесь не решил проблему. Я попытался запустить DCOMCNFG и изменить разрешения на всем компьютере, а также попытался просто изменить разрешения для компонента Excel, но его нет в DCOMCNFG на моем ПК с Windows 10 Pro.

Возможно, этот обходной путь кому-то поможет, пока не будет найдено лучшее решение.

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

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

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

Для 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.

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

Если вы запускаете приложение из планировщика заданий, полезно отметить опцию в общих параметрах «Запускать с наивысшими привилегиями».

Другие вопросы по тегам