2010-03-13 2 views
3

У меня есть элемент управления ActiveX, который я загружаю с помощью JavaScript в Internet Explorer. Он должен работать как средняя целостность в UAC в Vista и Win7. Это написано на C/C++, скомпилированном в Visual Studio.Загрузить ActiveX DLL в Internet Explorer с повышенными привилегиями

Одним из способов повышения привилегий является создание процесса брокера, который может запрашивать уровень целостности среды. Однако для этого проекта это не практическое решение. Мне действительно нужно, чтобы элемент управления ActiveX выполнял повышенный уровень.

Мой вопрос: что это самый простой способ сделать это? Могу ли я изменить параметры сборки в проекте как exe и использовать систему межпроцессного соединения COM для автоматической обработки сообщений или мне нужно быть более сложными? Нужно ли мне делать что-нибудь сложное, как вручную вызвать CreateProcess и сделать своего рода брокера, или он может работать только как ActiveX exe, который поднимает себя?

ответ

3

Это зависит от того, что делает ваш элемент управления ActiveX, как его встроить в страницу и как она реализована.

Простейшим подходом, вероятно, было бы реализовать его как сервер EXE, зарегистрировать его соответствующим образом, а затем предоставить исполняемые разрешения для запуска на среде в Low Rights Elevation Policy.

Если вы не хотите заходить так далеко, вы можете написать простой пользовательский сервер вне процесса, который снова вы зарегистрируете, и вы внесете свой собственный IClassFactory в запросы прокси-сервера в существующую DLL. Вы даже можете добавить ключ AppID для своего существующего объекта и указать, что он равен DllSurrogate (кроме регистрации в качестве приложения COM +), возможно, вы не сможете легко создать объект в суррогате (поскольку по умолчанию для IE должен указывать CLSCTX_ALL при создании объектов, которые сначала собирают регистрацию процесса).

Конечно, после всего этого, если ваш код делает слишком много предположений о том, где он находится или использует какие-либо не проксированные интерфейсы, он может не работать в любом случае.

+0

Будет ли это работать и для формы OCX ActiveX? – Ghigo

Смежные вопросы