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

Получение COM-класса factory для компонента не выполнено

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

Это сделало трюк для меня: (решение из msdn forum)

goto Controlpanel → Административные средства → Службы компонентов → компьютеры → myComputer → DCOM Config → Приложение Microsoft Excel.

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

В "Разрешении запуска и приложения" выберите "Настроить", "Изменить". Добавьте пользователя/группу, вызывающую приложение.

Ответ 5

В случае, если это помогает кому-то:

Я запускаю 64-разрядную версию Windows 7, и я хотел зарегистрировать 32-разрядную dll.

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

System.Runtime.InteropServices.COMException(0x80040154): Извлечение COM-класса factory для компонента с 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-класса factory для компонента с CLSID {A1D59B81-C868-4F66-B58F-AC94A4A7982E} не удалось из-за следующей ошибки: 80070005.

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

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

Ответ 6

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

Ответ 7

Для IIS 8 я сделал в основном то же самое, что и Monic. Im запускает мое приложение как собственный пул приложений на машине 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 также

Ответ 8

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

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

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