Buenas
Primero de nada:
·
¿Que es lo primero que debes hacer antes de acudir a un foro?: Acudir al servicio de soporte de la aplicación, al email del autor, para pedirle que implementen la multiple instancia, o pedirle información sobre el tipo de limitación que usaron, o algo que te pueda ayudar, ya que nosotros no somos magos.
¿Alguna sugerencia en particular?
Aparte de que seguramente haya alguna buena razón (ideada por el desarrollador) por la cual limitar la aplicación a 1 única instancia, hay varias formas de llevar a cabo esta limitación, por ejemplo:
- Usando un MUTEX
- Comprobando el nombre del proceso en la lista de procesos activos.
- Comprobando la existencia de un archivo local específico.
- etc, etc, etc..
Te preguntarás: "
¿Y que?", pues que la dificultad de una posible solución varia dependiendo de cual sea la forma que el desarrollador empleó, por ejemplo:
·
Si está comprobando el nombre del proceso en la lista de procesos activos:Con hacer copias del executable y renombrar el nombre de cada archivo sería suficiente.
·
Si está comprobando el nombre del proceso en la lista de procesos activos:Sería suficiente con eliminar el archivo antes de cada inicio de los posteriores procesos.
·
Si usó una detección vía MUTEX: 1. Si quieres una solución temporal deberás isolar el proceso en un espacio virtual (
SandBox), por ejemplo con
sandboxie.
2. Otra solución temporal y sin virtualización sería cerrar el/los
Handle(s) relacionados con el
MUTEX, esto puedes averiguarlo y hacerlo de forma sencilla con la aplicación
ProcessExplorer de
SysInternals.
Nota: En caso de ser un ensamblado .NET y que el desarrollador haya implementado la detección por MUTEX desde las opciones de VisualStudio (y no de otra forma más manual), deberás cerrar unos 4 o 5 Handles cuyos nombres contienen las palabras clave "
MUTEX" y "
BaseNamedObjects".
3. Si quieres una solución definitiva, creo que haría falta conocimientos de ingenieria inversa para desensamblar la aplicación, buscar la instrucción relacionada con el MUTEX y realizar los cambios necesarios para que permita múltiples instancias.
En fín, cuando desarrollas una aplicación puedes modificarle su identificador único, y la característica principal de una aplicación
single-instance es NO permitir más de una instancia de un proceso que tenga el mismo identificador.
Creando un
SandBox (como hace la aplicación
SandBoxie o cualquier virtualizador de aplicaciones) estarás creando un espacio virtual de memoria donde ejecutar ese proceso de forma aislada al resto, por lo tanto puedes ejecutar la aplicación tanto en el
Host como en el
SandBox sin que el Identificador de los dos procesos "colisionen", aunque la verdad es que no tengo muy claro el motivo, no se si es que quizás estos programas modifican de alguna manera el contexto del proceso hijo (la app single-instance) para que puedan heredar el identificador del proceso padre (el virtualizador) de alguna manera abstracta o algo parecido, no lo sé, pero claro, si intentas ejecutar la misma aplicación dos veces en el mismo espacio virtual del SandBox... pues pasa lo que ya he explicado, se detecta el MUTEX.
⇲ Documentación:
·
Globally unique identifier (GUID)·
Mutual exclusion (MUTEX)⇲ Utilidades:
·
Process Explorer