Учитывая следующий фрагмент кода, который использует Mutex:
string mutexName = @"Global\MyMutex";
try
{
_mutex = Mutex.OpenExisting(mutexName, MutexRights.Synchronize);
}
catch (WaitHandleCannotBeOpenedException)
{
SecurityIdentifier securityIdentifier = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
MutexSecurity mutexSecurity = new MutexSecurity();
mutexSecurity.AddAccessRule(new MutexAccessRule(securityIdentifier, MutexRights.Synchronize, AccessControlType.Allow));
bool dummy = false;
// Creates the internal Mutex without taking ownership on it.
_mutex = new Mutex(false, mutexName, out dummy, mutexSecurity);
}
Для некоторых из моих пользователей, когда создается Mutex (в блоке catch), генерируется исключение UnauthorizedAccessException. Я пытаюсь найти причину этого исключения.
Сообщение
Доступ к пути «Global \ MyMutex» запрещен.
Я знаю, что некоторые пользователи, имеющие проблему, не являются администраторами своего компьютера.
Я читал в MSDN о Mutex и MutexAccessRule, но мне не ясно, где я могу назначить или просмотреть разрешения, связанные с Mutex для данного пользователя.