Создание составных приложений в Windows 7 - PullRequest
1 голос
/ 28 марта 2010

Мне нужно перенести набор приложений Windows (работающих под XP с небольшой включенной защитой) на Windows 7 с различными уровнями безопасности, в зависимости от того, как наши клиенты могут настроить его. Каждая функциональная область представляет собой отдельный исполняемый файл или DLL, которая загружается и регистрируется центральным «составным» приложением. Это означает, что все различные части объединены в единое целое.

Моя проблема в том, что составное приложение знает о других приложениях через COM-регистр, либо как библиотека типов, либо как OCX, где это необходимо.

Я пробовал несколько вопросов здесь, чтобы попытаться решить возникающие проблемы, но мне кажется, что я не могу обойти проблему необходимости повышенного доступа для регистрации приложений и доступа к реестру. Наши клиенты будут ожидать такой же (относительно) кажущийся беспроблемный процесс загрузки и активации, как и в XP.

Так же у кого-нибудь есть решение для регистрации библиотек типов и элементов управления OCX без необходимости проходить процесс повышения прав.

Обновление:

Любые решения не обязательно должны быть в Delphi, решение этого для любого языка мне очень поможет.

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 29 марта 2010

Я думаю, что решил это. Если вы переопределяете методы DllRegisterServer и DllUnRegisterServer для каждого OCX, и в них перенаправляете доступ к кусту HKCR реестра в HKCU, а затем меняете RegisterTypeLibrary с comserv.pas на вызов RegisterTypeLibForUser, когда не удается выполнить вызов RegisterTypeLib , тогда элементы управления OCX могут быть зарегистрированы без необходимости повышения. Я думаю, что истина также относится к типам библиотек.

Секрет в том, что элемент управления OCX нужно менять, а не программы, которые его регистрируют.

Не уверен, правильно ли я все суммировал!

0 голосов
/ 29 марта 2010

Регистрация приложений COM и т. Д. Требует создания ключей и значений в HKLM и / или HKCR в реестре. Чтобы записать в эти кусты реестра, приложение ДОЛЖНО быть повышено. Например, установщики в Win7 / Vista автоматически запускаются с повышенными правами, предлагая пользователям при запуске с запросом UAC (если, предположительно, ваши пользователи не отключили UAC).

Я думаю, вам нужно будет осторожно переучить своих клиентов, изменив некоторые ожидания для Vista / Win7.

Если вы попытаетесь записать в HKLM и т. Д. Без повышения прав, то вы, вероятно, столкнетесь с проблемами, когда Vista / Win7 виртуализирует ваш доступ к реестру, а ваше приложение не пишет в то место, где оно считает, что пишет. *

Есть пара ответов SO здесь и здесь , которые должны предоставить все, что вам нужно знать, чтобы успешно повысить эффективность вашего приложения Delphi (или его частей).

...