Страница: 1 | 2 |
Вопрос: COM без регистрации
Добавлено: 06.10.10 19:01
Автор вопроса: Artyom
Ответы
Всего ответов: 23
Номер ответа: 16
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #16
Добавлено: 08.10.10 16:43
Перечитал тему. "использование dll без каких либо изменений в реестре" имел ввиду только ты. Про сало постов не нашел. Вопрос аффтара я привел в посте 14.
А то что "утверждал, что можно просто положить в папку, ничего не делать" - ИМХО, над тобой прикольнулись. В топике нет мемберов ниже двух желтых звезд, я не думаю что кто-то из них мог оказаться таким ламаком
С другой стороны, если регистрацией занимается программа - то все верно, юзеру можно просто положить в папку, ничего не делать.
Номер ответа: 17
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #17
Добавлено: 08.10.10 16:48
Вообще то, если уж говорить про извратные методы с приседаниями, то таки можно обойти процесс регистрации. Грузить DLL, вытаскивать их неё фабрику классов, пинать фабрику классов чтобы та создала инстанс. Но это реальный гемор...
Номер ответа: 18
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #18
Добавлено: 08.10.10 17:54
На самом деле это было за кулисами, в топике лишь верхушка айсберга.. ну да не будем об этом.. Этот вопрос закрыт...
В ходе обсуждения всплыла одна интересная деталь..
Предположим, в системе была зарегестрирована копия некой сom-dll, у нас в папке имеется дубликат и вызывая DllRegisterServer,мы, разумеется, затрем предыдущую запись в реестре.. Каким способом можно узнать была ли зарегистрирована эта либа ранее, чтоб не портить запись о ней.. Только искать соответствующую запись в реестре или есть другие способы?
Номер ответа: 19
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #19
Добавлено: 08.10.10 18:17
Там не все так однозначно.
Разумеется есть. Самый простой - пытаемся создать объект. Если объект создается - никакой регистрации не нужно. Нубство, но просто и без приседаний. Только в обработчике ошибок это учесть надо.
Номер ответа: 20
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #20
Добавлено: 08.10.10 18:41
Ну это кагбэ понятно.. я спрашивал о более цивилизованных методах.
Номер ответа: 21
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #21
Добавлено: 09.10.10 02:12
LamerOnLine, про пост 17. Чем плох метод, что его вспомнили только на 2й странице?
Это с использованием CoRegisterClassObject? Вот http://www.openrce.org/forums/posts/597 утверждают, что удобно и классно
Я б конечно попробовал.. но только, если бы была необходимость)
Номер ответа: 22
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #22
Добавлено: 09.10.10 04:27
Я вспомнил этот метод в посте 10 Не Co-функции, т.к. они роются в реестре, а Dll-функции.
Номер ответа: 23
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #23
Добавлено: 09.10.10 12:33
Всем плох, я уже писал про это на первой странице.
Если в dll декларировано несколько классов, и они коим образом ссылаются друг на друга (а Active dll оочень любят возвращать ссылки на PublicNotCreatable) - он попросту не работает. Та же песня с объявленными как паблик структурами или имплементацией интерфейсов.
То есть назвать это методом нельзя в принципе. Это жестоко кастомизированное решение, без которого всегда можно обойтись.