Не удалось получить фабрику класса COM для компонента
Я использую объект Excel (COM-компонент) для манипуляций с Excel. Он отлично работает на моем ПК, но при развертывании приложения в нашей интрасети я получаю эту ошибку:
Не удалось получить фабрику класса COM для компонента с CLSID {00024500-0000-0000-C000-000000000046} из-за следующей ошибки: 80070005
Я использую проверку подлинности Windows и имитировать =true в моем web.config
,
Я сделал все настройки в сервисе компонента, но он все равно выдает ту же ошибку.
Пожалуйста помоги
11 ответов
У меня была та же ошибка, когда я развернул свое приложение. У меня есть решение с этого сайта: Компонент с CLSID XXX не выполнен из-за следующей ошибки: 80070005 Доступ запрещен
Вот это решение:
В DCOMCNFG щелкните правой кнопкой мыши на " Мой компьютер" и выберите свойства.
Выберите вкладку COM Securities.
В разделе "Права доступа" нажмите " Изменить параметры по умолчанию", добавьте в него сетевую службу и дайте ей разрешение "Разрешить локальный доступ". Сделайте то же самое для
\ Users .В разделе "Разрешения на запуск и активацию" нажмите " Изменить значения по умолчанию", добавьте к нему сетевую службу и предоставьте ей разрешение " Локальный запуск" и " Локальная активация". Сделайте то же самое для
\ 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) и работал в моем случае без перезапуска:
Выбор пула приложений, подключенных к приложению в IIS
И щелкните правой кнопкой мыши -> Дополнительные параметры -> Модель процесса -> Выбрать локальную систему вместо рекомендуемого ApplicationPoolIdentity
И убедитесь, что C:\Windows\SysWOW64\config\systemprofile\desktop имеет достаточный доступ для пользователей.
Обновить ссылку на веб-сайт, связанный с этим пулом
Я получаю ту же ошибку при попытке экспортировать файл csv из Act! чтобы преуспеть. Я нашел один обходной путь - запустить Act! как администратор.
Это говорит мне, что это, вероятно, проблема с разрешением, но ни один из предыдущих ответов здесь не решил проблему. Я попытался запустить DCOMCNFG и изменить разрешения на всем компьютере, а также попытался просто изменить разрешения для компонента Excel, но его нет в DCOMCNFG на моем ПК с Windows 10 Pro.
Возможно, этот обходной путь кому-то поможет, пока не будет найдено лучшее решение.
Я могу понять твою боль. В моем случае ошибка была устранена путем выполнения следующих шагов:
- Пуск> Выполнить> dcomcnfg.
- Откройте папку "Конфигурация DCOM" и выберите "Службы компонентов"> "Компьютеры"> "Мой компьютер"> "Конфигурация DCOM".
- Выберите "Документ Microsoft Office Word 97 - 2003" / "Приложение Microsoft Excel" и перейдите к его свойствам.
- На вкладке "Безопасность" необходимо настроить "Права на запуск и активацию" (Авторизованный пользователь).
- Теперь перейдите в 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. Если он не установлен, он вернет сообщение об ошибке, которое вы получили выше.
Если вы запускаете приложение из планировщика заданий, полезно отметить опцию в общих параметрах «Запускать с наивысшими привилегиями».