Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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
"использование dll без каких либо изменений в реестре" имел ввиду только ты

На самом деле это было за кулисами, в топике лишь верхушка айсберга.. ну да не будем об этом.. Этот вопрос закрыт...

В ходе обсуждения всплыла одна интересная деталь..

Только тут нужно контролировать один ньюанс - была ли данная dll зарегистрирована ранее

Предположим, в системе была зарегестрирована копия некой с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-сайт: winandfx.narod.ru
 Профиль | | #21
Добавлено: 09.10.10 02:12
LamerOnLine, про пост 17. Чем плох метод, что его вспомнили только на 2й странице?
Это с использованием CoRegisterClassObject? Вот http://www.openrce.org/forums/posts/597 утверждают, что удобно и классно:)
Я б конечно попробовал.. но только, если бы была необходимость)

Ответить

Номер ответа: 22
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #22
Добавлено: 09.10.10 04:27
Я вспомнил этот метод в посте 10 :) Не Co-функции, т.к. они роются в реестре, а Dll-функции.

Ответить

Номер ответа: 23
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #23 Добавлено: 09.10.10 12:33
Чем плох метод, что его вспомнили только на 2й странице?

Всем плох, я уже писал про это на первой странице.
Если в dll декларировано несколько классов, и они коим образом ссылаются друг на друга (а Active dll оочень любят возвращать ссылки на PublicNotCreatable) - он попросту не работает. Та же песня с объявленными как паблик структурами или имплементацией интерфейсов.
То есть назвать это методом нельзя в принципе. Это жестоко кастомизированное решение, без которого всегда можно обойтись.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам