Тема: Регистрация ARX

Ситуация следующая:
*.arx лежит не в каталоге с AutoCAD-ом. При попытке зарегистрировать с помощью regsvr32 говорит "Не найден указанный модуль". Dependency Walker говорит, что не может найти "ACAD.EXE" и "OLEAPROT.ARX". Естественно при попытке перетащить (загрузить) *.arx в AutoCAD выдается сообщение "Error registry COM arx" (дословно не помню сообщение). При копировании *.arx в каталог с AutoCAD - все работает.
Как разрешить эту проблему, учитывая что:
в каталог с автокадом *.arx положить нет прав (на регистрацию COM-сервера права есть);
в переменную окружения %PATH% путь к автокаду добавить нет возможности.
Это тупик? Или есть какие-либо варианты? Благодарю за содействие.

Re: Регистрация ARX

> Геннадий
Я никакой спец по ARX, но чем не устраивает - Documents and Settings\All Users\Application Data?

Re: Регистрация ARX

Посмотри здесь: https://www.caduser.ru/forum/topic20954.html

Re: Регистрация ARX

BP пишет:

Я никакой спец по ARX, но чем не устраивает — Documents and Settings\All Users\Application Data?

Поясните, пожалуйста, что мне даст этот каталог? Ведь там все равно нет ни "ACAD.EXE", ни "OLEAPROT.ARX"...

Re: Регистрация ARX

> Александр Ривилис
Ошибочка вышла, прошу прощения... Вышеуказанное было с Debug версией и это не мешало загрузке аддина - Автокад с этим как-то сам разбирается, а в релизе не видит "ACDB16.DLL", которая используется COM-классом. Т.е. попытка зарегистрировать не проходит, но сам ARX загружается. Он есть в списке загруженных аддинов, но попытка получить GetInterfaceObject возвращает не NULL, но и нерабочий указатель на интерфейс. Если в каталог с ARX положить ac1st16.dll, acdb16.dll и acge16.dll, то все регится и работает - но это криво - положенные версии могут не соответствовать имеющимся в установленном автокаде. /DELAYLOAD acdb16.dll - не помогает: не линкуется ARX: LINK : fatal error LNK1194: cannot delay-load 'acdb16.dll' due to import of data symbol '"__declspec(dllimport) class AcDbHostApplicationServices * s_pServices"...
Еще пришел вопрос в голову - как в данном случае AutoCAD будет вести себя под бесправным юзером, которому не разрешена регистрация COM-объектов? Зачем он вообще пытается регистрировать? Это ведь не его забота, а инсталлятора, например или клиентской программы...

Re: Регистрация ARX

Геннадий пишет:

Еще пришел вопрос в голову — как в данном случае AutoCAD будет вести себя под бесправным юзером, которому не разрешена регистрация COM-объектов?

Плохо будет себя вести. Для работы самого AutoCAD необходимы права как минимум PowerUser. А для регистрации COM-сервера - права админа. Поэтому COM-сервер действительно нужно регистрировать в инсталляторе и подавлять сообщения об ошибках при регистрации arx-файла как COM-сервера при загрузке его в AutoCAD. Что касается того, что не видится ACDB16.DLL, то это кране странно, т.к. в момент загрузки твоего приложения ACDB16.DLL уже загружен в AutoCAD, т.е. AutoCAD его нашел. Если твое приложение загрузилось, а в таблице импорта его есть ACDB16.DLL, то проблема не в этом.