Usuário interativo
O usuário interativo é o usuário que está atualmente conectado ao computador onde o servidor COM está sendo executado. Se a identidade estiver definida para ser o usuário interativo, todos os clientes usarão a mesma instância do servidor se o servidor registrar sua fábrica de classes como multiuso. Se nenhum usuário estiver conectado, o servidor não será executado. Se o servidor tiver uma interface gráfica do usuário (GUI) que o cliente precisa ver, você deve usar o usuário interativo para a identidade do servidor. No entanto, escolher essa identidade acarreta alguns riscos de segurança porque o servidor é executado sob a identidade do usuário conectado sem o conhecimento ou consentimento do usuário conectado. Além disso, um aplicativo de serviço não pode exibir uma interface do usuário. Para obter mais informações, consulte Interactive Services.
Se um servidor COM estiver configurado para ser executado como o usuário interativo, em um ambiente de serviços de terminal, o servidor será iniciado na sessão interativa que corresponde à identidade do usuário do cliente. No entanto, o aplicativo cliente pode usar o moniker de sessão para fazer referência a um objeto fornecido pelo servidor em uma sessão que não corresponde à identidade do cliente. Quando isso é usado, o aplicativo cliente pode especificar qualquer sessão, caso em que o servidor será executado como o usuário proprietário da sessão, não como o usuário inicial. As permissões de acesso padrão nesse cenário não permitiriam que o usuário de inicialização chamasse métodos no servidor. No entanto, subsistem os seguintes riscos de segurança:
- Se o servidor COM expõe interfaces que não são controladas por COM, como portas TCP, pipes nomeados, portas LPC, seções de memória compartilhada e assim por diante, elas podem ser usadas pelo usuário iniciante para influenciar o servidor. Os objetos COM configurados para serem executados como o usuário interativo devem reduzir ao máximo essa superfície de ataque.
- Os objetos COM são livres para definir suas próprias permissões de acesso. Se o objeto definir permissões de acesso, seja em seu registro AppID ou chamando CoInitializeSecurity, para permitir o acesso do usuário inicial, o usuário poderá iniciar o servidor para ser executado como outro usuário e, em seguida, acessar o objeto.
-
Iniciando o do usuário