Re: Вопрос все о том же E_ACCESSDENIED
От: kzua  
Дата: 07.01.05 08:06
Оценка:
Здравствуйте, Glaz, Вы писали:

G>Имеется сервер, реализованный в виде ATL сервиса, и клиент в виде dll. Все создано при помощи мастера в VS 2003.

G>Клиент создает объект сервера (CoCreateInstance).
G>Затем регистрируется на нем, передавая одним из параметров метода регистрации указатель на свой интерфейс
G>( pServer->Advise(IUnknown** ppUnk) ).
G>Сервер ( в реализации Advise ) получает необходимые указатели на интерфейсы клиента и взаимодействует с ним.

G>Задача: заставить все это работать не настраивая параметры защиты вручную. ОС Win2000 SP4.


G>Клиент с сервером работает без проблем, а вот сервер с клиентом никак. При попытке со стороны сервера запросить необходимый интерфейс ( (*ppUnk)->QueryInterface(...) ) получаю E_ACCESSDENIED.


G>Изучил много постов на эту тему, но у всех постившихся и сервер и клиент реализованы в exe. В этом случае статья "Защита в DCOM/COM+" все проблемы решает.


G>Но в этой же статье я прочитал следующую фразу:

G>"Не стоит пытаться вызвать эту функцию (CoInitializeSecurity) из COM-сервера, расположенного в DLL, даже если DLL зарегистрирована в COM+-приложении, ибо к моменту создания пользовательского объекта данная функция точно уже вызвана самим COM."

G>Так как же быть в таком случае? Получается, что для COM-объектов расположенных в dll защиту программно не настроить?


G>А работает все только когда я изменяю настройки безопасности по умолчанию в dcomcnfg.

G>Но меня этот вариант совершенно не устраивает.
G>Помогите пожалуйста.


"FAQ: COM Security Frequently Asked Questions," Knowledge Base article #Q158508"

http://support.microsoft.com/default.aspx?scid=kb;en-us;158508

3. Why does IConnectionPoint::Advise not work?
4. I receive E_ACCESSDENIED from CoCreateInstanceEx. Why?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.