Загрузите ActiveX DLL в Internet Explorer с повышенными привилегиями.

StackOverflow https://stackoverflow.com/questions/2437408

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top