Загрузка ActiveX DLL в Internet Explorer с повышенными привилегиями - PullRequest
3 голосов
/ 13 марта 2010

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

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

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

1 Ответ

3 голосов
/ 17 марта 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...