У меня есть код, который работал, но недавно остановился.Он находится в плагине Adobe Reader, и в последней версии Reader есть «защищенный режим», который вызывает мою проблему.
Мой плагин может загружать некоторые из моих обычных библиотек, которые загружаются в процессе:
MyNormalLib::IMyClassPtr foo;
HRESULT hr = foo.CreateInstance(__uuidof(MyNormalLib::MyClass));
Но когда я пытаюсь получить com-указатель на мой сервис (работающий на той же машине):
MyOtherLib::IMyServicePtr bar;
HRESULT hr = bar.CreateInstance(__uuidof(MyOtherLib::MyService));
Я получаю E_ACCESSDENIED
для моего HRESULT.
Это используетсяработать хорошо, пока не появился Adobe Reader X.Без защищенного режима Adobe работает нормально и все работает.В защищенном режиме Adobe запускает другой процесс чтения с некоторыми ограничениями.Глядя на это с помощью Process Explorer, я вижу, что на вкладке Security для родительского процесса Reader почти все установлено на Mandatory;но у дочернего процесса Reader большинство групп установлено на «Запретить, Обязательный», некоторые «Обязательные, Ограниченные», некоторые просто Обязательные.Если это имеет значение, я могу предоставить более подробную информацию.
Все процессы (мой сервис и оба Reader) выполняются как один и тот же пользователь - я.У меня есть права администратора, если это имеет значение.
Что может вызвать ошибку AccessDenied при попытке доступа к моей собственной службе?Через какие обручи безопасности я должен прыгнуть, чтобы заставить это работать?