Code: Select all
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);
Vor kurzem bekam ich eine System.ArgumentNullException: „Der Wert darf nicht null sein.“ (Parameter 'identity')' in der neuen MutexAccessRule-Zeile.
Seltsamerweise ist der Identitätswert NICHT null.
Ich habe es auch versucht Erstellen der Identität mit diesen Elementen ohne Erfolg:
Code: Select all
identity = WindowsIdentity.GetCurrent().Owner;
identity = WindowsIdentity.GetCurrent().Owner.AccountDomainSid;
identity = new SecurityIdentifier(WellKnownSidType.BuiltinDomainSid, null);
identity = new SecurityIdentifier(WellKnownSidType.NTAuthoritySid, null);
Code: Select all
string user = Environment.UserDomainName + "\\" + Environment.UserName;
var allowEveryoneRule = new MutexAccessRule(user, MutexRights.FullControl, AccessControlType.Allow);
Code: Select all
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);
Bearbeiten:
Das Paket, von dem ich vermutete, dass es fehlschlägt, war: System.Threading. AccessControl.
Die Version vor dem Update war 8.0.0 und Nach dem Update auf 9.0.0 konnte ich endlich zur alten Version 8.0.0 zurückkehren und die Ausnahme war verschwunden. Alles ist wieder in Ordnung.
Ich werde einen Fehlerbericht einreichen.