У нас есть программа, которая запускает дочерний процесс с локальным COM-сервером, который по разным причинам должен запускаться с повышенными правами. Все работает нормально, если родительский и дочерний процессы повышены.
Однако мы также хотим запускаться, когда родительский процесс не повышен. Запуск дочернего процесса приводит к диалоговому окну UAC (что является приемлемым), и кажется, что дочерний процесс запускается правильно и успешно вызывает CoRegisterClassObject
. Однако родительский процесс получает REGDB_E_CLASSNOTREG при вызове CoCreateInstance
с тем же CLSID.
Я предполагаю, что это какая-то проблема с разрешениями. Как я могу зарегистрировать свой класс на сервере с повышенными правами, чтобы он мог вызываться из процесса без повышенных прав?