غير قادر على تعديل ACL التجاعيد في C# على CommonAppDataPath الدليل

StackOverflow https://stackoverflow.com/questions/1440149

  •  10-07-2019
  •  | 
  •  

سؤال

لذلك أنا أحاول تعديل الأذونات BUILTIN\Users أن يكون على الأقل تعديل نظام الملفات الوصول إلى الحق.للأسف محاولاتي في استخدام رمز أدناه تنتج دون تغيير ACL.

            SecurityIdentifier usersSecurityIdentifier = ntAccount.Translate(typeof(SecurityIdentifier)) as SecurityIdentifier;
            DirectorySecurity directorySecurity = Directory.GetAccessControl(source.FullName);
            FileSystemAccessRule accessRule 
                = new FileSystemAccessRule(@"BUILTIN\Users", FileSystemRights.FullControl, AccessControlType.Allow);

            directorySecurity.ModifyAccessRule(AccessControlModification.Add,
                accessRule,
                out modified);

            Console.WriteLine(modified);

تعديل التقارير صحيحا في كل الحالات ، ولكن التجاعيد لا يتم تحديث ترجمات عندما ننظر إليها على خصائص المجلد.

كما أنني حاولت إضافة إلى وصول الحكم على SecurityIdentifier أن لم يكن لديك بالفعل ACL الدليل باستخدام تعليمة برمجية مشابهة ولكن فقط AddAccessRule بدلا من تعديل.على الرغم الجديد SecurityIdentifier ظهر على التجاعيد قائمة على الدليل أنهم لم يكن لديك الوصول إلى أنا المحدد.

أنا أحاول تعديل حصول الملكية الدليل في البيئة.SpecialFolders.CommonApplicationData أن حساب المسؤول هو صاحب.أنا أيضا attepting تعديل ACL المشرف.

لا أحد لديه أي فكرة ما هو الخطأ w/ رمز أعلاه أو أي من الموارد التي يمكن أن يقودني إلى الطريق الصحيح من تعيين ACL باستخدام الأم الأصلية .صافي الطبقات ؟

هل كانت مفيدة؟

المحلول

لقد اكتشفت هذا مع مساعدة من صديق يعمل في شركة مايكروسوفت.في الواقع عملية كنت تستخدم تعيين ACL دقيقة.لقد تم تفسير النتائج بشكل غير صحيح.في الأساس هناك أية مشكلة تعيين ACL على دليل هذا الطريق طالما أنت تعمل المشرف عند محاولة إجراء التغييرات.

دقيقة أذونات المجلد متاحة للعرض (في ويندوز فيستا) من خلال:

  1. انقر بزر الماوس الأيمن على المجلد المطلوب ثم اختر خصائص
  2. حدد علامة التبويب أمان
  3. انقر فوق خيارات متقدمة
  4. انقر فوق تحرير
  5. حدد الكيان الذي ترغب في عرض أذونات ثم انقر فوق تحرير.

هذا هو الجزء الأول كان في عداد المفقودين.CommonApplicationData المسار بالفعل لديه أذونات مجموعة BUILTIN\Users الكيان.حتى بعد تشغيل التعليمات البرمجية, أنا فعلا في نهاية المطاف مع اثنين من الكيانات.واحد يقول قراءة و تنفيذ و الآخر يقول أذونات خاصة.عند تحرير الكيان مع أذونات خاصة أنا في الحقيقة أرى أن BUILTIN\المستخدمين على الحصول على الدليل.

كنت حقا تبحث عن BUILTIN\المستخدمين من الحصول على الدليل و كل من هو الطفل المجلدات و الكائنات.هنا هو رمز مقتطف من ما انتهى باستخدام.كنت قادرا على تأكيد رمز عملت سواء من خلال اختبار تسخير يدويا فحص الملف و الدليل قوائم ACL.

DirectorySecurity directorySecurity = Directory.GetAccessControl(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData));
FileSystemAccessRule accessRule
    = new FileSystemAccessRule(@"BUILTIN\Users", FileSystemRights.FullControl, 
        InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, 
        PropagationFlags.None, 
        AccessControlType.Allow);

bool modified=false;
directorySecurity.ModifyAccessRule(AccessControlModification.Add,
    accessRule,
    out modified);

if (modified)
{
    source.Create(directorySecurity);
}
else
{
    source.Create();
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top