Re[4]: Регистрация COM-объекта из своей программы
От: Melamed Россия  
Дата: 20.07.23 12:02
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Здравствуйте, Melamed, Вы писали:


bnk>>>Но вообще это нехорошо (самостоятельно регистрировать DLL).

M>>А как же программы с частично открытой архитектурой. Когда программе можно писать расширения. Например, модули расширения Microsoft Office представляют собой COM-объект и я не помню, что я его регистрировал с помощью RegSvr32, а просто регистрировал в программе

bnk>Не понял. Программы с частично открытой архитектурой вообще не обязаны использовать COM, насколько я понимаю.

bnk>Я же не говорю что нельзя зарегистрировать программно (тот же regsvr32 это как-то делает), скорее о том, что лучше регистрировать с помощью инсталлятора. И де-регистрировать аналогично.
bnk>Еще, не обязательно же регистрировать дергая DllRegisterServer, можно напрямую записать в реестр все что требуется.
Как я понял из статьи Использование ATL Registrar функция DllRegisterServer кроме что вносить регистрационную запись о регистрируемом COM-объекте в ветвь реестра HKCR, ничего не делает. Значит, ограничение прав на запись в этот раздел реестра.
И кроме этого, программа-регистратор ничего не знает о регистрируемом COM-oбекте, кроме динамической библиотеки, в которой он реализован.

bnk>>>По-нормальному это должна быть работа инсталлятора.

M>>Предлагаешь, написать все 50-60 COM-объектов, сразу, когда пользователь может уже работать с 5 СOM-объектами.

bnk>Тоже не понял. Какая разница сколько там объектов.

bnk>Когда устанавливается программа, ее установщик регистрирует все что нужно. Сколько нужно столько и регистрирует, хоть 5 хоть 50.

bnk>Если нужно зарегистрировать только для текущего пользователя (HKCU), т.е. вызвать "regsvr32 /i: user name.dll", и name.dll это поддерживает, можно попробовать DllInstall(TRUE, "user") вместо DllRegisterServer

Идея хорошая. Надо попробовать

M>>Запреты в программировании — дело условное. Если ты понимаешь, к чему он может привести, то можешь его нарушать, но на твоей ответственности нормальная работа системы.

M>>Если ты не понимаешь, к чему приведет нарушение данного запрета, то он не до конца понимает данный механизм операционной системы

bnk>Ну да, классика кун-фу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.