2008-12-19 21 views
7

Mutex'u oluşturma biçimimizle ilgili bir sorunumuz var. Sorun çizgisi şudur: tüm dillerde çalışır böyleceİngilizce olmayan işletim sistemlerinde Everyone grubunun adı

kodlanmış "Herkes" dizesi yalnızca İngilizce işletim sisteminde çalışıyor,
MutexAccessRule rule = new MutexAccessRule("Everyone", MutexRights.FullControl, AccessControlType.Allow); 

, nasıl bu çizgiyi değiştirebilirim?

cevap

12

hakkında bugün faydalı oluyor:

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

VB:

Bu kod, bu sorunu çözer

this will help benziyor

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

ben aynı problem vardı, ama etkinleştirmek için "Everyone" grup adının gerçek yerelleştirilmiş dizesine gereksinim duyuldu MessageQueue'ye erişim. İşte, bulduğum çözüm şu: iyi çalışıyor:

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