Мьютекс - это путь.
bool isFirst;
Mutex m = new Mutex(false, "MyMutex", out isFirst);
Если isFirst имеет значение false, тогда выполняется другой процесс.Что касается имени, если вы хотите, чтобы это проверялось между несколькими сеансами (терминальными сеансами), затем измените код на что-то вроде.
Mutex m = new Mutex(false, "Global\\MyMutex", out isFirst);