There are programs, several instances of which cannot be started in the usual way. For example, several instances of Skype can not be run on one PC.

Is there any way to circumvent this restriction through C #? I tried to use Process.Start, but did not help.

  • Control of other instances is often done through global objects of type Event or Mutex. As far as I remember, you cannot control them through CreateProcess. - Vladimir Martyanov

1 answer 1

Typically, the “allow only one instance of the program to run” functionality is implemented within the program itself. When the second copy of the program starts, it somehow (one in a million possible) checks that the first copy of the program is already running, and just immediately quits.

Therefore, you can not so easily deceive the program, you have to override it. Do not be surprised that even if you can trick to launch two instances of the program, it may not work properly - for example, to fall.


A better way is not to try to deceive someone else’s program, but simply to ask it. It is possible that the developers of the program have provided the opportunity you need. For example, the second copy of Skype can be run with the key / secondary .