Enable a program in Windows to run multiple times?

I've got this legacy software that only allows you to run one copy at a time, it detects that you have another session opened and it won't allow you to open a second instance. The problem is this is a cpu intensive program and it only use a single core. Is there any hacks or tweaks so I can trick it and open more than one instance? This would allow me to retire about 5 servers... I'm using Windows 2008 R2.

I had to use cff explorer to enable the use more than 2GB RAM as the program crashes when it tries to use more than 2GB.


Limiting a program to just one instance isn't an OS function: it has to be coded right inside the code.

This means the correct answer is: it depends on how the program performs the single instance detection. There are several ways of doing this:

  • Using a mutex. This is the simplest way and the most commonly used. In its simplest incarnation, a mutex will be limited to the current user context which means that you can trick the program to run multiple times by creating different services instance to run the program and run each of them in the context of a different user. This assumes, of course, that you can automate the program completely. It's also usually possible to write a "wrapper" app that manipulates the mutex and will change it i a way that allow other instances to run.

  • Checking the exe name in the process list. Trivial: rename the exe, run.

  • Lock a specific file. This can be trivial or difficult depending on the file's location.

  • Lock a local resource (TCP port, etc). This is usually the hardest to work around since there is no easy way to trick the application into not using that resource (in particular if it is really used, not just locked for preventing concurrency).

In all cases, the simplest thing to do is to ask the developers to lift that limitation.


Sandboxie isn't designed with this use in mind but due to the way it runs processes in a virtual "bottle" it can be used to run multiple instances of an application that will normally only allow one instance to be run.

Another possible option: Programs that only allow a single instance normally do so by creating a mutex. When a new instance is started the existence of the mutex is checked and execution stops if it is found. It is possible to write a program that can start an instance and then delete its mutex. Be warned though that applications that don't expect more than one concurrent instance may well be problematic with this approach, so some level of virtualisation is preferable, just so each instance doesn't know or interact with others.


App-V would possibly help you here. It allows you to run multiple instances of the same virtualised program, each isolated from the other.