Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: simson43 от 18-09-2019, 18:00:21

Название: Не удалось получить фабрику класса COM для компонента с CLSID
Отправлено: simson43 от 18-09-2019, 18:00:21
ОШИБКА: Не удалось получить фабрику класса COM для компонента с CLSID {0B628DE4-07AD-4284-81CA-5B439F67C5E6} из-за следующей ошибки: 80080005 Ошибка при выполнении приложения-сервера (Исключение из HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE))
Не знаю уже куда податься,
Код запускается на IIS, Windows 10, autocad 16
Обращение к автокаду через  COM
Код - C# [Выбрать]
  1. dynamic app = null;
  2. Type comAppType = Type.GetTypeFromProgID("AutoCAD.Application");
  3. try { app = Marshal.GetActiveObject(type); }
  4. catch { }
  5. if (app == null)
  6.       app = Activator.CreateInstance(comAppType);
Если запускать из студии то все работает!
Сначала то же самое было с екселем, но его поборол, теми же манипуляциями для автокада не вышло(
Название: Re: Не удалось получить фабрику класса COM для компонента с CLSID
Отправлено: Александр Ривилис от 18-09-2019, 19:27:40
Думаю, что и не получится. Почитай тему: https://forums.autodesk.com/t5/net/start-autocad-with-interop-but-with-different-user/td-p/4815925
Название: Re: Не удалось получить фабрику класса COM для компонента с CLSID
Отправлено: simson43 от 19-09-2019, 10:38:56
и какая альтернатива?
Название: Re: Не удалось получить фабрику класса COM для компонента с CLSID
Отправлено: Александр Ривилис от 19-09-2019, 10:40:49
и какая альтернатива?
Альтернатива чему? Чего ты хочешь достичь?
Название: Re: Не удалось получить фабрику класса COM для компонента с CLSID
Отправлено: simson43 от 19-09-2019, 10:47:12
хочу работать с автокадом на IIS
вроде настроил удостоверение пула приложения от имени админа, но все равно не работает(
Название: Re: Не удалось получить фабрику класса COM для компонента с CLSID
Отправлено: Александр Ривилис от 19-09-2019, 10:55:31
Можно попробовать настроить запуск от конкретного пользователя, для которого AutoCAD нормально запускается. Но лучше использовать вместо полного AutoCAD AcCoreConsole: http://adndevblog.typepad.com/autocad/2012/04/getting-started-with-accoreconsole.html (но с COM/ActiveX работать не будет)
Название: Re: Не удалось получить фабрику класса COM для компонента с CLSID
Отправлено: Привалов Дмитрий от 19-09-2019, 21:54:16
хочу работать с автокадом на IIS
вроде настроил удостоверение пула приложения от имени админа, но все равно не работает(
Судя по задумке не сработает.
Нужно в сеансе пользователя запустить AutoCAD хотя бы раз, чтобы создался профиль в реестре. Затем возможно закрыть, чтобы сохранились настройки.
Затем в этом сеансе, если открыт AutoCAD   можно выполнить app = Marshal.GetActiveObject(type); и работать с ним.

Скорее всего для успеха на компьютере должен быть запущен один экземпляр AutoCAD, с которым нужно работать из активного пользователя.

Во всех других случаях скорее всего различные проблемы. Либо AutoCAD не захочет запускаться и создавать профиль, либо будут сложности с получением экземпляра AutoCAD через GetActiveObject.
хук с ROT https://adn-cis.org/dostup-k-com-prilozheniyam-iz-tabliczyi-ispolnyayushhixsya-obektov-(rot).html
у меня не получился из под одного пользователя. Он показывал правильное количество запущенных  экземпляров, но возвращал только один.
Если несколько сеансов пользователей с запущенными AutoCAD, то не вернет ли GetActiveObject экземпляр другого пользователя?
Название: Re: Не удалось получить фабрику класса COM для компонента с CLSID
Отправлено: simson43 от 19-09-2019, 22:01:49
и все права раздавал на приложение, всем пользователям
и запустил сервер от имени пользователя
и запустил автокад ручками, но GetActiveObject в этом случае ничего не возвращает, будто приложение закрыто, а создать новое не получается у него никак..
и что только не делал
Excel к слову получилось завести созданием папки Desktop в недрах system32 - такие вот неочевидные решения
автокад завести не удалось
на сайте Microsoft прямым текстом пишут что оно для того не предназначено
бросил эту затею