Я регистистрирую COM обьект используя свойство компонента COM Extract at Build. После установки продукта я не могу использовать Regsvr32 для регистрации COM обьекта. Пишет DllRegisterServer in BlaBla.dll failed. Return code was 0x80070005. Как показали мои исследования это из-за того, что инсталяция создает при регистрации ветки в реестре с permissions ReadOnly для администратора.
Использовать SelfRegister я не могу, так как dll защищена Armadillo-й.
Можно в InstallShield назначать дефолтовые permissions для регистрации COM или может есть другие пути решения проблемы?
Спасибо,
Андрей.
Re: InstallShield 8.0 Developer, COM and Registry problem
Здравствуйте, Andrey_Ponyakov, Вы писали:
A_P>Здравствуйте.
A_P>Я регистистрирую COM обьект используя свойство компонента COM Extract at Build. После установки продукта я не могу использовать Regsvr32 для регистрации COM обьекта. Пишет DllRegisterServer in BlaBla.dll failed. Return code was 0x80070005. Как показали мои исследования это из-за того, что инсталяция создает при регистрации ветки в реестре с permissions ReadOnly для администратора. A_P> Использовать SelfRegister я не могу, так как dll защищена Armadillo-й. A_P> Можно в InstallShield назначать дефолтовые permissions для регистрации COM или может есть другие пути решения проблемы?
Если я правильно помню, IS Developer — это под Windows Installer. Если так, посмотрите в таблицу LockPermissions. Там обычно права на реестр, файлы и папки. Подкорректируйте поле Permissions, как вам надо. Есть статья в MSDN-е на эту тему, ключевые слова для поиска "LockPermissions Table", там расписано как это работает. Например, если не хотите ограничивать права доступа на объект, то не должно быть записей в этой таблице, соответствующих этому объекту. Но если этот объект уже существует до установки, то права сохраняются такими, какими они были до этого. Можно, например, удалить ключ реестра при установке вашего продукта, но перед добавлением новых ключей (см. "RemoveRegistry Table").
Успехов!
К этому моменту у меня внутри 0.5, 0.7, 0.33 (с) НС
Re[2]: InstallShield 8.0 Developer, COM and Registry problem
Здравствуйте, WPooh, Вы писали:
WP>Если я правильно помню, IS Developer — это под Windows Installer. Если так, посмотрите в таблицу LockPermissions. Там обычно права на реестр, файлы и папки. Подкорректируйте поле Permissions, как вам надо. Есть статья в MSDN-е на эту тему, ключевые слова для поиска "LockPermissions Table", там расписано как это работает. Например, если не хотите ограничивать права доступа на объект, то не должно быть записей в этой таблице, соответствующих этому объекту. Но если этот объект уже существует до установки, то права сохраняются такими, какими они были до этого. Можно, например, удалить ключ реестра при установке вашего продукта, но перед добавлением новых ключей (см. "RemoveRegistry Table").
Да, это под Windows Installer. В таблице LockPermissions можно назначать права для файлов, директорий и ключей реестра (File table, Registry table, or the CreateFolder table.). Но если исползовать COM Extract at Build опцию, то IS при сборке билда извлекает информацию из dll-ки и использует дефолтовые права Full control для SYSTEM и ReadOnly для администратора.
Если я просто добавляю новый ключ и не назначаю ему права. То он создается аналогично с правами Full control для SYSTEM и ReadOnly для администратора.
Можно конечно записи, которые соответствуют регистрации dll-ки, руками прописать в табличку Registry, но это действительно крайний случай.
Re: InstallShield 8.0 Developer, COM and Registry problem
Основная проблемма это то, что я не могу использовать Regsvr32. Но на нескольких машинах Regsvr32 работает!!! Хотя пользователь логинится с правами админа и не может вручную менять соответствующие ключи в реестре. Возможно дело в настройках системы.
Any ideas?