إعدادات أذونات الإدخال/الإخراج باستخدام مثبت .net

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

سؤال

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

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

المحلول

تعد الكتابة إلى مجلد Program Files فكرة سيئة حقًا، ويجب أن تفترض أن هذا الموقع "للقراءة فقط" بمجرد تثبيته.

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

غالبًا ما تكتب برامج Win9x القديمة إلى مجلد ملفات البرنامج، ويقوم Windows Vista بالفعل ببعض الحيل الرائعة للسماح لهذه البرامج بالعمل.عندما يكتب برنامجك ملفًا، فإن نظام التشغيل Vista يضعه فعليًا في مكان آخر لا يمكن الوصول إليه إلا لهذا المستخدم.يتم فعل الشيء نفسه بالنسبة للتسجيل الذي يكتب إلى HKLM (أو هكذا اكتشفت بعد ساعات من التصحيح ...) ويفعل Server 2008 نفس الشيء.

إذا كنت بحاجة إلى حفظ إعدادات المستخدم، فإن البديل الأفضل هو حفظ الإعدادات في مجلد بيانات التطبيق (متغير البيئة %APPDATA%)

إذا كانت الإعدادات على مستوى النظام، فيجب على المستخدم الإداري تعيينها بعد التثبيت أو عند التشغيل لأول مرة، ويجب ألا يتمكن مستخدمون محدودون من استبدالها.

إذن للإجابة على سؤالك - نعم، هناك طريقة للقيام بما طلبته.لكنها فكرة سيئة، وغير آمنة ومن المحتمل أن تسبب مشاكل على المدى الطويل.

نصائح أخرى

يمكنك كتابة فئة تثبيت مخصصة يمكنها تغيير أذونات الأمان للمجلد.يفترض هذا أن التثبيت تم بواسطة مستخدم لديه الإذن بتغيير أمان الملف/الدليل.

الخيار الأفضل هو عدم الكتابة إلى الدلائل ضمن ملفات البرنامج على الإطلاق.

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