Re[2]: Доступ к COM синглтону из Windows shell extension
От: yakovchuck  
Дата: 30.11.12 19:43
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, yakovchuck, Вы писали:


Y>>Есть com exe сервер. Com реализован используя ATL как синглтон через добавление DECLARE_CLASSFACTORY_SINGLETON. Есть shell extension (расширяет контекстное меню по папке). Синглтон уже создан в отдельном процессе. Теперь нужно к нему получить доступ из shell extension, но при вызове CoCreateInstanse я получаю не уже существующий COM объект, а создается новый. Т.е. синглтона как бы и нет. Windows 7, x64. Все участнике этого дела собраны под x64 платформу. Кто знает, в чем может быть дело ?


O>Дело в том, что клиент и сервер не должны работать в одном процессе, если у них разные

O>контексты безопасности, например, когда они запущены от разных пользователей или (Vista и выше)
O>выполняются на разных integrity levels. Это было бы серъезной уязвимостью.
O>Поэтому для разных клиентов среда COM создает разные экземпляры серверов.

O>Чтобы этого избежать, нужно указать системе создавать экземпляры сервера от одной конкретной

O>учетной записи и настроить доступ. Для этого используются соответствующие параметры внутри ключа
O>AppId, такие как RunAs, AccessPermission, LaunchPermission, AuthenticationLevel и другие.

O>Могу порекомендовать к прочтению вот эту статью — http://www.rsdn.ru/article/com/comsec.xml
Автор(ы): Владислав Чистяков
Дата: 28.01.2002

O>Также поиск по ключевым словам "COM синглетон" и "ATL синглетон" должен дать результаты.

Да вот как-то все в инете не густо по этому вопросу. Может кто-то уже сталкивался и решал такую проблему, я не думаю что она такая уж редкая.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.