Активация между сеансами с помощью моникера сеанса

Активация между сеансами (также называется межсеансовой активацией) позволяет клиентскому процессу запускать (активировать) локальный серверный процесс в указанном сеансе. Эта функция доступна для приложений, настроенных для запуска в контексте безопасности интерактивного пользователя, также известного как режим активации объектов "RunAs Interactive User". Дополнительные сведения о контекстах безопасности см. в разделе Контекст безопасности клиента.

Распределенная модель COM (DCOM) обеспечивает активацию объектов для каждого сеанса с помощью предоставленного системой моникера сеанса. К другим системным моникерам относятся файловые моникеры, моникеры элементов, универсальные составные моникеры, антимоникеры, моникеры указателей и моникеры URL.

Чтобы иметь возможность использовать моникер сеанса, приложение DCOM должно быть настроено на запуск от имени интерактивного пользователя. Это можно задать с помощью средства администрирования служб компонентов, просмотра свойств приложения DCOM и выбора интерактивного пользователя на вкладке Удостоверение . Дополнительные сведения о возможных рисках безопасности, связанных с настройкой приложения DCOM для запуска в качестве интерактивного пользователя в среде служб удаленных рабочих столов, см. в разделе "Удостоверение приложения (COM)" документации по COM в пакете sdk для платформы.

Если для запуска приложения выбран какой-либо другой тип пользователя, моникер сеанса будет игнорироваться приложением. Моникер сеанса также игнорируется серверными приложениями COM+. Дополнительные сведения о других методах выбора типа пользователя для запуска приложения см. в документации com в пакете SDK для платформы.

Чтобы создать моникер сеанса, необходимо создать идентификатор сеанса служб удаленных рабочих столов с помощью моникера класса, указывающего идентификатор класса сервера обработки.

Создание моникера сеанса

  1. Добавьте отображаемое имя моникера класса в префикс отображаемого имени моникера сеанса, используя следующий синтаксис:

    "Session:[digits]!clsid:[class id]"
    

    где цифры представляют идентификатор сеанса сеанса, в котором будет запущен серверный процесс, а идентификатор класса — идентификатор класса сервера. Обратите внимание, что идентификатор сеанса представляет собой число base-10.

    Для компьютеров под управлением Windows XP или более поздней версии использование следующего синтаксиса приведет к отправке com активации в текущий активный сеанс физической консоли независимо от идентификатора сеанса:

    "Session:Console!clsid:[class id]"
    
  2. После создания моникера сеанса можно передать результат в функцию MkParseDisplayName или Функцию MkParseDisplayNameEx .

Вы можете использовать моникер сеанса так же, как и любой другой моникер.

Пример кода, демонстрирующий активацию локального серверного процесса в указанном сеансе, см. в разделе Использование моникера сеанса.

Дополнительные сведения об активации объектов, предоставляемых системой моникерах и моникерах класса, см. в документации по COM в пакете SDK для платформы.

Примечание

Процессы, создаваемые между сеансами, имеют верхний предел размера блока среды. Это ограничение составляет около 4 КБ, но оно может быть больше или меньше в зависимости от других сведений, необходимых для создания процесса (например, имен файлов, каталогов и параметров для нового процесса).