Search code examples
c++cwindowswindows-shellsingle-instance

Restrict application to one instance per shell session on Windows


There are a lot of solutions for restricting an application from running twice. Searching by process name, using a named mutex etc. But I all of these methods don't work if I want to restrict my application to the shell session.

A user may have more than login session and shell on windows (right?)? If this is true I want to be able to run one instance of my application in every shell session but allow only one.

Is there a way to get a shell identifier which could then be put into the mutex name?


Solution

  • You can create local (session only) or global (whole system) mutexes. See http://msdn.microsoft.com/en-us/library/system.threading.mutex.aspx for more info. Look for global and local.