سؤال

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

عند كتابة خارج ملف I أولا إنشاء ملف كملف .TMP، ثم استخدم File.Copy الكتابة الأصلي. يحصل على الملف .tmp خلق، ولكن فشل File.Copy. مكتوبة ملفاتي إلى دليل العام ( "C: \ الوثائق وإعدادات \ جميع المستخدمين \ بيانات التطبيق" في XP).

وماذا يمكنني أن أفعل بحيث يمكن لجميع المستخدمين لديهم السيطرة الكاملة على ملفات التطبيق؟

ولقد وجدت هذا:

        System.Security.AccessControl.DirectorySecurity sec =  
                                System.IO.Directory.GetAccessControl ( directory );  
        FileSystemAccessRule accRule = new FileSystemAccessRule ( Globals.userIdentity,  
             FileSystemRights.FullControl, AccessControlType.Allow );  
        sec.AddAccessRule ( accRule );  

وسوف تفعل ما سبق إلى الدليل الذي تقع كافة الملفات في حل هذه المشكلة؟ أو سوف يكون لي أن تفعل شيئا لكل ملف؟ إذا كان الأمر كذلك ما هو أن شيئا ما؟

وتحرير:

لا يمكن

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

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

المحلول

وأنا فقط التحقق من الأذونات على كافة المستخدمين \ دليل بيانات التطبيق. "المستخدمين" و "مستخدمي الطاقة" قوائم ACL لا تملك "حذف المجلدات الفرعية والملفات" إذن.

ويمكن حذف الملفات الخاصة بهم لأن "CREATOR OWNER" ACL ديه التحكم الكامل.

وأما عن كيفية التفاف على هذا، هل يمكن أن تعطي الجميع عن الوصول، ولكن فكرة أفضل أن يكون منح "المستخدمون" و "المستخدمون السلطة" ACLS "حذف المجلدات الفرعية والملفات" إذن على دليل APPDATA التطبيق الخاص بك.

وبدلا من ذلك، هل يمكن تعيين "حذف" و "تعديل" الأذونات على الملف نفسه ل "المستخدمين" و "المستخدمون السلطة" عند إنشائه.

نصائح أخرى

وهذا الرمز من شأنه أن يعطي للمستخدم حقوق الوصول الكامل إلى المجلد، ولكن هذا قد تفشل على الأمن مرة أخرى.

وأفضل طريقة للتأكد من التطبيق الخاص بك يمكن تخزين المعلومات دائما هو الحوض الصغير IsolatedStorage. ولكن إذا كنت تحتاج إلى الوصول إلى الملفات الخاصة بك خارج التطبيق الخاص بك، ثم ليس هذا هو أفضل حل.

وماذا عن إذا كنت تستخدم رمز مشابهة لإعطاء الجميع حق الوصول الكامل إلى ملف بعد أن تم خلقها؟ إذا كنت فهمت بشكل صحيح سوف يكون دائما إنشاء ملفات مع التطبيق الخاص بك، أليس كذلك؟ ثم المستخدم الذي يقوم بإنشاء ملف في المقام الأول سيكون لها أيضا الحق في ضبط إعدادات الأمان للملف. ثم انها مجرد مسألة تحديد الحقوق العامة إلى الملف مرة واحدة يتم إنشاؤه وجميع المستخدمين قادرين على استبدال الملف في وقت لاحق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top