Procurando sugestões com um programa que não permite várias sessões

2

Estamos executando uma máquina Windows Server 2012 R2 com os Serviços de Área de Trabalho Remota. A ideia é que todos possam se conectar e executar softwares da empresa que exijam configuração extensiva. Dessa forma, basta configurá-lo uma vez e delegar as configurações para todos nesse computador.

Também temos o RemoteApps implementado e funciona para a maioria dos programas.

No entanto, existe um programa em particular, o Lutron RadioRA, que se recusa a trabalhar neste tipo de ambiente. Se for aberto por qualquer pessoa no computador e outro usuário tentar abri-lo em sua própria sessão RDP, ele reclama que o programa já está em execução e não será iniciado.

Meu primeiro pensamento foi tentar Sandboxie, como eu sei que é o que é projetado para. Não funcionou de jeito nenhum ... O .NET travou imediatamente e eu recebi toneladas de erros "arquivo grande demais para sandbox" e várias outras falhas até eu ter fechado o Sandboxie.

Meu próximo pensamento foi tentar "runas", já que ele está embutido no Windows. Eu criei um usuário chamado runastest com uma senha simples e tentei executar runas apontadas para o arquivo EXE do programa. Coloque a senha e começou como esperado. Comutado para outro usuário, fez a mesma coisa usando o mesmo usuário runastest ... mesmo erro sobre ele já em execução.

Eu não tenho certeza do que mais tentar, realmente. Precisamos de uma maneira de iniciar o programa sem verificar quais outros programas estão sendo executados no computador, essencialmente - já que não consigo imaginar por que seria realmente problemático ter várias cópias abertas ao mesmo tempo. Tudo é armazenado na sessão do usuário ativo de qualquer forma, AppData e outros.

    
por Danny Forche 03.09.2015 / 00:00

1 resposta

0

O programa destina-se a ser executado como instâncias únicas.

No desenvolvimento do Windows, chama-se "Global Mutex". Eu não sei como você pode contornar isso. E mesmo se você puder, é uma má ideia. Como o programa foi desenvolvido com uma única instância em mente, e ignorando isso, você ficaria com um comportamento imprevisível do software.

IMHO, você deve instalar um servidor VNC no host remoto, e compartilhar a instância, todo mundo vai acessar a mesma instância de desktop, permitindo, em seguida, usar o software ao mesmo tempo. Sim! Ao mesmo tempo, significa que as pessoas começarão a lutar para mover o mouse.

Editar:

Com algumas pesquisas, encontrei esta solução para o Lync . Talvez seja trabalho para você. Ele usa uma opção "IsolatedSynchronizationObjects" para o ThinApp, que garantirá que um "mutex global" seja isolado. No mesmo link, é mostrado como você pode detectar se o aplicativo está usando um mutex global ou não com o Processo Explorador .

    
por 03.09.2015 / 04:18