Код: Выделить всё
var identity = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
var allowEveryoneRule = new MutexAccessRule(identity, MutexRights.FullControl, AccessControlType.Allow);
var securitySettings = new MutexSecurity();
securitySettings.AddAccessRule(allowEveryoneRule);
var mutex = new Mutex(true, __MUTEX_ID, out createdNew);
mutex.SetAccessControl(securitySettings);
Недавно я начал получать исключение System.ArgumentNullException: «Значение не может быть нулевым. (Параметр 'identity')' в новой строке MutexAccessRule.
Как ни странно, значение идентификатора НЕ равно нулю.
Я тоже попробовал создание личности с помощью этих факторов безуспешно:
Код: Выделить всё
identity = WindowsIdentity.GetCurrent().Owner;
identity = WindowsIdentity.GetCurrent().Owner.AccountDomainSid;
identity = new SecurityIdentifier(WellKnownSidType.BuiltinDomainSid, null);
identity = new SecurityIdentifier(WellKnownSidType.NTAuthoritySid, null);
Код: Выделить всё
string user = Environment.UserDomainName + "\\" + Environment.UserName;
var allowEveryoneRule = new MutexAccessRule(user, MutexRights.FullControl, AccessControlType.Allow);
Код: Выделить всё
SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
var acct = sid.Translate(typeof(NTAccount)) as NTAccount;
var allowEveryoneRule = new MutexAccessRule(acct.ToString(), MutexRights.FullControl, AccessControlType.Allow);
Подробнее здесь: https://stackoverflow.com/questions/792 ... accessrule
Мобильная версия