Je dois m'assurer qu'il n'y a qu'une seule instance de mon programme en cours d'exécution en même temps. Après quelques recherches j'ai trouvé this SO question et ai suivi les instructions dans this answer. J'ai créé une petite application de test:Lancer mutex TypeInitializationException lorsqu'il est exécuté en tant qu'utilisateur différent en même temps
using System;
using System.Threading;
namespace Test
{
class Program
{
static Mutex mutex = new Mutex(true, "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F}");
static void Main(string[] args)
{
if (mutex.WaitOne(TimeSpan.Zero, true))
{
Console.ReadLine();
mutex.ReleaseMutex();
}
else
{
Console.WriteLine("Only one instance allowed");
Console.ReadLine();
}
}
}
}
Quand j'exécute le fichier binaire pour la première fois tout est correct et il attend un retour à la sortie. Lorsque je lance l'application la deuxième fois, il est indiqué "Une seule instance autorisée". Jusqu'à présent, tout fonctionne comme prévu. MAIS lorsque je démarre l'application sous un autre utilisateur (RunAs ou en changeant d'utilisateur), elle lance une exception TypeInitializationException. Comment venir? Est-ce que quelqu'un a une solution pour cela?
InnerException: System.UnauthorizedAccessException -> L'accès au chemin "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F}" est refusée.
Mis à jour ma question avec d'autres informations InnerException. – McKembley
Ah, je l'aime quand je pense bien. Mutex.SetAccessControl(). –