Re: Доступ к COM синглтону из Windows shell extension
От: okman Беларусь https://searchinform.ru/
Дата: 30.11.12 17:02
Оценка: 7 (1)
Здравствуйте, yakovchuck, Вы писали:

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


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

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

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

Также поиск по ключевым словам "COM синглетон" и "ATL синглетон" должен дать результаты.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.