2008-12-19 12 views
7

में सभी समूह का नाम हमें Mutex बनाने के तरीके के साथ एक समस्या है। समस्या लाइन है:गैर-अंग्रेजी ओएस

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

हार्डकोडेड "सभी" स्ट्रिंग केवल पर अंग्रेजी OSes काम करता है, कैसे तो यह सभी भाषाओं में काम करता है हम इस लाइन बदल सकता हूँ?

उत्तर

12

गूगल आज उपयोगी किया जा रहा है:

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

वीबी:: इस कोड इस समस्या का हल this will help तरह

लगता

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

मैं एक ही समस्या थी, लेकिन सक्षम करने के लिए "हर कोई" समूह नाम की वास्तविक स्थानीयकृत स्ट्रिंग की आवश्यकता होती है एक संदेश क्यूई तक पहुंच। यहां मिला गया समाधान है, जो ठीक काम करता है:

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