Execute tsconfig.msc e defina "Restringir cada usuário a uma única sessão" para Sim.
Como evito que o usuário abra várias instâncias de um executável no servidor (Windows 2008 R2). Por exemplo, temos usuários abrindo um programa instalado no servidor a partir de seus PCs (Windows 7 Enterprise); em muitos casos, eles abrem o executável para um local diferente e abrem o executável novamente em outro PC. Isso cria várias instâncias que fazem com que mais de uma licença seja usada por esse usuário.
** Acabei de dizer que o problema foi resolvido. Um dos Engenheiros de Processo criou um programa que identificou todas as instâncias em execução e pode fechar uma instância no comando. Esta ainda é uma maneira manual de corrigir o problema, mas não tomo essas decisões. Obrigado a todos que contribuíram.
Execute tsconfig.msc e defina "Restringir cada usuário a uma única sessão" para Sim.
Eu substituiria o atalho para o programa com um atalho para um script de inicialização. O script de inicialização verificaria se o processo foi iniciado pelo usuário que iniciou o script. Se sim, dê ao usuário a opção de matar o processo ou apenas mostre uma mensagem que o usuário não pode iniciar novamente.
Estou procurando maneiras de alternar scripts movendo o programa em execução para a sessão atual, mas ainda não encontrei sorte nesse caminho. O melhor que posso fazer é usar uma mensagem opcional para perguntar ao usuário se ele deseja alternar para a sessão com o programa em execução, e se sim, use tscon <session id> /v
para alternar o usuário para essa sessão.
Relacionados: Conectando-se a sessão específica usando área de trabalho remota