System.ArgumentNullException bei neuer MutexAccessRuleC#

Ein Treffpunkt für C#-Programmierer
Guest
 System.ArgumentNullException bei neuer MutexAccessRule

Post by Guest »

Ich habe eine Erkennungsfunktion für „einzelne Anwendungsinstanzen“, die den „klassischen“ Mutex-Ansatz verwendet:

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);
Bis jetzt hat es gut funktioniert.

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);
Und auch dieser Weg ist fehlgeschlagen:

Code: Select all

string user = Environment.UserDomainName + "\\" + Environment.UserName;
var allowEveryoneRule = new MutexAccessRule(user, MutexRights.FullControl, AccessControlType.Allow);
... oder ...

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);
Ich vermute, dass der Fehler nach der letzten System.Security.Principal.Windows-Paketaktualisierung aufgetreten ist, aber jetzt kann ich die ältere Version nicht installieren...

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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post