Permite que um programa no Windows seja executado várias vezes?

5

Eu tenho esse software legado que só permite que você execute uma cópia por vez, detecta que você tem outra sessão aberta e não permitirá que você abra uma segunda instância. O problema é que este é um programa intensivo de CPU e só usa um único núcleo. Existe algum hacks ou ajustes para que eu possa enganá-lo e abrir mais de uma instância? Isso permitiria que eu aposentasse cerca de 5 servidores ... Estou usando o Windows 2008 R2.

Eu tive que usar o cff explorer para ativar o uso de mais de 2GB de RAM, pois o programa trava quando ele tenta usar mais de 2GB.

    
por lbanz 11.09.2012 / 11:01

4 respostas

8

Limitar um programa a apenas uma instância não é uma função do SO: ele precisa estar codificado dentro do código.

Isso significa que a resposta correta é: depende de como o programa executa a detecção de instância única. Existem várias maneiras de fazer isso:

  • Usando um mutex. Esta é a maneira mais simples e mais comumente usada. Em sua encarnação mais simples, um mutex será limitado ao contexto do usuário atual, o que significa que você pode enganar o programa para executar várias vezes, criando diferentes instâncias de serviços para executar o programa e executar cada um deles no contexto de um usuário diferente. Isso pressupõe, claro, que você pode automatizar o programa completamente. Também é normalmente possível escrever um aplicativo "wrapper" que manipule o mutex e alterá-lo de uma forma que permita que outras instâncias sejam executadas.

  • Verificando o nome do exe na lista de processos. Trivial: renomeie o exe, execute.

  • Bloqueie um arquivo específico. Isso pode ser trivial ou difícil, dependendo da localização do arquivo.

  • Bloqueie um recurso local (porta TCP, etc). Isso geralmente é o mais difícil de ser resolvido, pois não há uma maneira fácil de enganar o aplicativo para não usar esse recurso (especialmente se ele for realmente usado, não apenas bloqueado para impedir a simultaneidade).

Em todos os casos, a coisa mais simples a fazer é pedir aos desenvolvedores que levantem essa limitação.

    
por 11.09.2012 / 12:03
4
O

Sandboxie não é projetado com esse uso em mente, mas devido à maneira como ele executa processos em uma "garrafa" virtual, ele pode pode ser usado para executar várias instâncias de um aplicativo que normalmente permitirá que apenas uma instância seja executada.

Outra opção possível: os programas que permitem apenas uma única instância normalmente o fazem criando um mutex. Quando uma nova instância é iniciada, a existência do mutex é verificada e a execução é interrompida, se for encontrada. É possível escrever um programa que possa iniciar uma instância e excluir seu mutex. Esteja avisado que os aplicativos que não esperam mais de uma instância simultânea podem ser problemáticos com essa abordagem, portanto, algum nível de virtualização é preferível, de modo que cada instância não saiba ou interaja com outras.

    
por 11.09.2012 / 12:47
3

App-V possivelmente te ajude aqui. Ele permite que você execute várias instâncias do mesmo programa virtualizado, cada uma isolada da outra.

    
por 11.09.2012 / 11:43
-1

Ctrl + Shift + clique duplo ícone de atalho do aplicativo

Ele abrirá uma nova instância de aplicativo

    
por 21.03.2017 / 08:30