Подключение к COM-серверу с повышенными правами из процесса без повышенных прав - PullRequest
3 голосов
/ 24 марта 2010

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

Однако мы также хотим запускаться, когда родительский процесс не повышен. Запуск дочернего процесса приводит к диалоговому окну UAC (что является приемлемым), и кажется, что дочерний процесс запускается правильно и успешно вызывает CoRegisterClassObject. Однако родительский процесс получает REGDB_E_CLASSNOTREG при вызове CoCreateInstance с тем же CLSID.

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

Ответы [ 2 ]

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

Чтение COM Elevation Moniker для нескольких способов доступа к повышенному серверу вне процесса.

1 голос
/ 25 марта 2010

Сообщения о межпроцессном COM-обмене подчиняются UIPI Vista . Я предлагаю вам использовать некоторые другие способы связи, такие как именованный канал с измененным ACL , сокеты / WCF / Remoting с частными протоколами и т. Д., Чтобы позволить непривилегированному пользователю получить доступ.

...