Using a mutex, you can ensure that multiple users can run a program, but each one can run only one copy of the program.
This can come in handy when users are logging into a Citrix server or other shared server, and you don't want to limit the application to running only once.
The following code illustrates this="content-fragment page no-wrapper" id="fragment-6615">
01.using
System;02.using
System.Security.Principal;03.using
System.Threading;04.using
System.Windows.Forms;05. 06.namespace
WindowsFormsApplication207.{08. static
class
Program09. {10. [STAThread]11. static
void
Main()12. {13. bool
ok;14. string
strMyAppName = "ObscureAppName";15. string
strMutex = WindowsIdentity.GetCurrent().Name.ToString();16. strMutex
= strMutex.Split('\\')[1];
17. strMutex
+= strMyAppName;18. Mutex
m = new
Mutex(true, strMutex,
out
ok);19. if
(!ok)18. Mutex
m = new
Mutex(true20. {21. MessageBox.Show("Already
running");22. Application.Exit();23. }24. if
(ok)25. {26. Application.Run(new
Form1());27. GC.KeepAlive(m);
// important!28. }29. }30. }31.}This is an extension of the work previously done by Michael A. Covington here: http://www.ai.uga.edu/mc/SingleInstance.html