Имеется сервер, реализованный в виде ATL сервиса, и клиент в виде dll. Все создано при помощи мастера в VS 2003.
Клиент создает объект сервера (CoCreateInstance).
Затем регистрируется на нем, передавая одним из параметров метода регистрации указатель на свой интерфейс
( pServer->Advise(IUnknown** ppUnk) ).
Сервер ( в реализации Advise ) получает необходимые указатели на интерфейсы клиента и взаимодействует с ним.
Задача: заставить все это работать не настраивая параметры защиты вручную. ОС Win2000 SP4.
Клиент с сервером работает без проблем, а вот сервер с клиентом никак. При попытке со стороны сервера запросить необходимый интерфейс ( (*ppUnk)->QueryInterface(...) ) получаю E_ACCESSDENIED.
Изучил много постов на эту тему, но у всех постившихся

и сервер и клиент реализованы в exe. В этом случае статья "Защита в DCOM/COM+" все проблемы решает.
Но в этой же статье я прочитал следующую фразу:
"Не стоит пытаться вызвать эту функцию (CoInitializeSecurity) из COM-сервера, расположенного в DLL, даже если DLL зарегистрирована в COM+-приложении, ибо к моменту создания пользовательского объекта данная функция точно уже вызвана самим COM."
Так как же быть в таком случае? Получается, что для COM-объектов расположенных в dll защиту программно не настроить?
А работает все только когда я изменяю настройки безопасности по умолчанию в dcomcnfg.
Но меня этот вариант совершенно не устраивает.
Помогите пожалуйста.