Reading the article you sent you are not following it correctly:
"The name of the mutex should contain a GUID, which ensures that no other application uses the same name. If you don’t know how to create a GUID, click here."
Not a new GUID for each instance. Create a GUID once making the string unique.
You could use something like
static class Program
{
static Mutex mutex;
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
var guid = ((System.Runtime.InteropServices.GuidAttribute)(System.Reflection.Assembly.GetEntryAssembly().GetCustomAttributes(typeof(System.Runtime.InteropServices.GuidAttribute), false).Single())).Value;
bool alreadyRun;
mutex = new Mutex(false, "App_Name" + guid.ToString(), out alreadyRun);
if (!alreadyRun) return;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1()); }
}
Then if you want another version of your app to run at the same time just give it a new GUID. You can prefix Local\ as per the article if required.
Here is an image