Здравствуйте, 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>Ну да, классика кун-фу