Можно ли снизить уровень привилегий при вызове CoCreateInstance в Vista? - PullRequest
1 голос
/ 20 августа 2009

Хорошо, у меня есть плагин для IE, который после установки должен (с разрешения пользователя) перезапустить IE.

Для этого у меня есть DLL, которая вызывается установщиком. И это работает, но проблема в том, что когда IE перезапускается в Vista, он перезапускается с правами администратора установщика, что является проблемой по ряду причин.

Я использую CoCreateInstance для запуска IE, чтобы я получил экземпляр интерфейса IWebBrowser2 для выполнения некоторых действий с ним.

Итак, мой вопрос: возможно ли вызвать CoCreateInstance из приложения, работающего с привилегиями администратора, таким образом, чтобы результирующий экземпляр объекта COM наследовал привилегии базового пользователя, а не привилегии администратора вызывающего приложения?

1 Ответ

1 голос
/ 20 августа 2009

Хорошо, я нашел решение отсюда:

http://social.msdn.microsoft.com/Forums/cs-CZ/ieextensiondevelopment/thread/78a2bc18-1920-4e58-af7e-48dbcebe7643

Из моей установочной DLL мне нужно запустить новый поток и выдать себя за текущего пользователя в этом потоке, а затем установить низкий уровень целостности и создать экземпляр COM с контекстом CLSCTX_ENABLE_CLOAKING.

...