2012-07-13 8 views
15

मुझे एक समस्या है जहां मुझे सभी संबंधित उपयोगकर्ताओं के लिए एप्लिकेशन से संबंधित सेटिंग्स को स्टोर करने के लिए किसी फ़ोल्डर में पहुंच प्रदान करने की आवश्यकता है। मैं ने पाया है कि यह नीचे दिए गए कोड के साथ किया जा सकता है ...प्रोग्रामर रूप से किसी फ़ोल्डर में अनुमतियां जोड़ना

var Info = new DirectoryInfo(settingsdir); 
var Security = Info.GetAccessControl(AccessControlSections.Access); 

Security.AddAccessRule(
    new FileSystemAccessRule(
     "Authenticated Users", FileSystemRights.Modify, 
     InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, 
     PropagationFlags.None, 
     AccessControlType.Allow)); 

समस्या मैं ने पाया है कि "प्रमाणीकृत उपयोगकर्ता", एक सिस्टम खाते तथापि खिड़कियों पर है विंडोज इस के विभिन्न भाषा संस्करणों पर है खाता नाम का अनुवाद किया जाता है, उदाहरण के लिए जर्मनी में इस खाते को 'Authentifizierte Benutzer' कहा जाता है। क्या इस खाते के उचित नाम को जानने का कोई तरीका है (प्रत्येक भाषा के माध्यम से जाने और सही खाता नाम खोजने के स्पष्ट होने के साथ)।

उत्तर

26

मुझे सुझाव है कि आप अच्छी तरह से ज्ञात एसआईडी सूची का उपयोग करें (http://support.microsoft.com/kb/243330 देखें)। प्रमाणीकृत उपयोगकर्ता हमेशा एसआईडी होता है: एस -1-5-11। यदि आप इसका उपयोग करते हैं, तो यह भाषा अज्ञेयवादी होना चाहिए (लेकिन मैंने परीक्षण नहीं किया है)।

कि बजाय एक SecurityIdentifier और उपयोग बनाएँ:

var sid = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null); 

Security.AddAccessRule(
    new FileSystemAccessRule(
     sid, 
     FileSystemRights.Modify, 
     InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, 
     PropagationFlags.None, 
     AccessControlType.Allow)); 
+0

बहुत बहुत धन्यवाद !!! मैं परीक्षण करूंगा (मेरे पास सबकुछ स्थापित है) और पुष्टि करें कि यह काम करता है या नहीं। –

+1

एक आकर्षण की तरह काम करता है !!! सभी गंभीरता में मुझे दस्तावेज़ीकरण को देखकर खुद को पकड़ा जाना चाहिए था। बहुत सराहना की। –

+0

ने मुझे +1 करने में मदद की :-) – Jodrell

संबंधित मुद्दे