Compartilhar via


Ativação de sessão para sessão com um moniker de sessão

A ativação de sessão para sessão (também chamada de ativação entre sessões) permite que um processo de cliente inicie (ative) um processo de servidor local em uma sessão especificada. Esse recurso está disponível para aplicativos configurados para execução no contexto de segurança do usuário interativo, também conhecido como o modo de ativação do objeto "RunAs Interactive User". Para obter mais informações sobre contextos de segurança, consulte Contexto de segurança do cliente.

O DCOM (Distributed COM) permite a ativação de objeto por sessão usando um Moniker de Sessão fornecido pelo sistema. Outros monikers fornecidos pelo sistema incluem monikers de arquivo, monikers de item, monikers compostos genéricos, anti-monikers, monikers de ponteiro e monikers de URL.

Para poder usar o moniker de sessão, o aplicativo DCOM deve ser definido para ser executado como o usuário interativo. Isso pode ser definido usando a ferramenta Administrativa dos Serviços de Componentes, exibindo as Propriedades do aplicativo DCOM e selecionando O usuário interativo na guia Identidade . Para obter mais informações sobre os possíveis riscos de segurança associados à configuração de um aplicativo DCOM para ser executado como o usuário interativo em um ambiente de Serviços de Área de Trabalho Remota, consulte a seção "Identidade do Aplicativo (COM)" da documentação COM no SDK (Platform Software Development Kit).

Se qualquer outro tipo de usuário for selecionado para executar o aplicativo, o moniker de sessão será ignorado pelo aplicativo. O moniker de sessão também é ignorado por aplicativos de servidor COM+. Para obter mais informações sobre outros métodos para selecionar o tipo de usuário para executar o aplicativo, consulte a documentação com no SDK da plataforma.

Para criar um moniker de sessão, você deve compor a ID da sessão dos Serviços de Área de Trabalho Remota com um moniker de classe que especifica a ID de classe do servidor de processo.

Para criar um moniker de sessão

  1. Prefixe o nome de exibição do moniker de classe com o nome de exibição do moniker de sessão usando a seguinte sintaxe:

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

    em que dígitos representam a ID da sessão na qual o processo do servidor será iniciado e onde a ID da classe representa a ID da classe do servidor. Observe que a ID da sessão é um número de base 10.

    Para computadores que executam o Windows XP ou posterior, o uso da sintaxe a seguir resultará em COM enviando a ativação para a sessão de console físico ativa no momento, seja qual for sua ID de sessão:

    "Session:Console!clsid:[class id]"
    
  2. Depois de criar o moniker de sessão, você pode passar o resultado para a função MkParseDisplayName ou a função MkParseDisplayNameEx .

Você pode usar um moniker de sessão da mesma maneira que usaria qualquer outro moniker.

Para obter um exemplo de código que demonstra como ativar um processo de servidor local em uma sessão especificada, consulte Usando um moniker de sessão.

Para obter mais informações sobre ativação de objeto, monikers fornecidos pelo sistema e monikers de classe, consulte a documentação com no SDK da plataforma.

Observação

Os processos criados entre sessões têm um limite superior no tamanho do bloco de ambiente. Esse limite é de cerca de 4 KB, mas pode ser maior ou menor dependendo de quais outras informações são necessárias para criar o processo (por exemplo, nomes de arquivo, diretórios e parâmetros para o novo processo).