मैं यह सुनिश्चित करने के लिए सी # में एक छोटी उपयोगिता लिख रहा हूं कि एक निर्दिष्ट फ़ोल्डर और इसकी सभी सामग्री के पास उचित पहुंच अधिकार हैं (मैं Authenticated Users
समूह पूर्ण पहुंच देना चाहता हूं)। निम्नलिखित कोड शीर्ष स्तर फ़ोल्डर की एसीएल (अभिगम नियंत्रण सूची) को अद्यतन करने के लिए ठीक से काम करने लगता है:यह देखने के लिए कि "विरासत अनुमतियां शामिल हैं" को फ़ाइल या फ़ोल्डर के लिए अनचेक किया गया है या नहीं?
SecurityIdentifier allUsers = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null);
InheritanceFlags iFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;
FileSystemAccessRule newRule = new FileSystemAccessRule(allUsers,
FileSystemRights.FullControl, iFlags,
PropagationFlags.None, AccessControlType.Allow);
DirectoryInfo info = new DirectoryInfo(folderPath);
DirectorySecurity security = info.GetAccessControl();
security.AddAccessRule(newRule);
info.SetAccessControl(security);
मैंने देखा है, तथापि, कि इस नए पहुंच नियम सबफ़ोल्डर है कि "शामिल करने के लिए प्रचार नहीं कर रहा है विरासत अनुमतियां ... "विकल्प उनके सुरक्षा गुणों में अनचेक किया गया। यह केवल समझ में आता है। तो, मैं जो करना चाहता हूं वह इस तरह के सबफ़ोल्डर के लिए सुरक्षा अनुमति विरासत को वापस चालू करना है।
मेरी खुदाई ने ObjectSecurity.SetAccessRuleProtection
विधि को अनदेखा कर दिया है जो मुझे चाहिए जो आधा होना चाहिए। हालांकि, यह उन ऑब्जेक्ट्स पर उपरोक्त विधि का अंधाधुंध उपयोग करने के लिए मैला लगता है जो पहले से ही अपने माता-पिता के डीएसीएल का उत्तराधिकारी है। इस प्रकार, मैं यह निर्धारित करना चाहता हूं कि कौन सी ऑब्जेक्ट्स की अनुमति विरासत बंद हो गई है, लेकिन मुझे इस विधि को संबंधित विधि या संपत्ति नहीं मिल रही है। क्या कोई है? क्या मुझसे कोई चूक हो रही है?
यह क्यों फर्क पड़ता है अगर एक मूल फ़ोल्डर पहले से ही यह स्थापित किया है? इसे फिर से स्थापित करना किसी भी दुःख का कारण नहीं बनना चाहिए। –
@ एम। बाबाकॉक - व्यावहारिक कारणों से यह एक फ़ाइल या फ़ोल्डर में अद्यतन को मजबूर करने के लिए अपर्याप्त और अक्षम लगता है जिसे अपडेट करने की आवश्यकता नहीं है। मेरे विशिष्ट मामले में, केवल कुछ उपफोल्डर्स हैं जो * एक्सेस अधिकारों का वारिस नहीं करते हैं, लेकिन उन फ़ोल्डर्स में सैकड़ों या हजारों फाइलें हैं जो * * * करती हैं। प्रदर्शन कारणों से मैं इन सभी वस्तुओं की तुलना में इन वस्तुओं की एक मुट्ठी भर अद्यतन करूँगा। – Jeremy
हालांकि डुप्लिकेट नहीं है, यह http://stackoverflow.com/questions/6574196/programatically-removing-include-heheritable-permissions-from-this-objects-par – emd