2008-12-19 11 views
7

Nous avons un problème avec la façon dont nous créons un Mutex. La ligne de problème est:Le nom du groupe Tout le monde dans les systèmes d'exploitation non anglais

MutexAccessRule rule = new MutexAccessRule("Everyone", MutexRights.FullControl, AccessControlType.Allow); 

La chaîne hardcoded « Tout le monde » ne fonctionne que sur l'anglais OSes, comment pouvons-nous changer cette ligne de sorte qu'il fonctionne dans toutes les langues?

Répondre

12

Google est d'être utile aujourd'hui:

On dirait this will help

Ce code permet de résoudre ce problème:

SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null); 
    MutexAccessRule rule = new MutexAccessRule(sid, MutexRights.FullControl, AccessControlType.Allow); 

VB:

Dim sid As System.Security.Principal.SecurityIdentifier = New System.Security.Principal.SecurityIdentifier(System.Security.Principal.WellKnownSidType.WorldSid, Nothing) 
Dim rule As System.Security.AccessControl.MutexAccessRule = New System.Security.AccessControl.MutexAccessRule(sid, System.Security.AccessControl.MutexRights.FullControl, System.Security.AccessControl.AccessControlType.Allow) 
3

J'ai eu le même problème, mais nécessaire la chaîne localisée réelle du nom de groupe "Tout le monde" afin de permettre l'accès à un MessageQueue. Voici la solution que j'ai trouvée, qui fonctionne bien:

SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null); 
var acct = sid.Translate(typeof(NTAccount)) as NTAccount; 
myMessageQueue.SetPermissions(acct.ToString(), MessageQueueAccessRights.FullControl); 
Questions connexes