كيف يتم تعيين خيار البرنامج بواسطة المسؤول ولا يستطيع المستخدم تغييره؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

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

عادةً ما أقوم بذلك الآن باستخدام قيمة محددة في قسم HKLM\Software في سجل النظام.يقوم المسؤول بتعيين القيمة ولا يمكن للمستخدمين تغييرها (ليس لديهم حقوق تعديل الإدخالات في HKLM).

تكمن المشكلة في أن هذا يؤثر على جميع المستخدمين على جهاز الخادم الطرفي (أو Citrix).أود اكتشاف طريقة للقيام بذلك على أساس كل مستخدم.كيف يتعامل الآخرون مع هذا؟هل يوجد قسم في سجل النظام لهذا النوع من الإعدادات لكل مستخدم ولا يمكن للمستخدم تغييره؟

شكرا على أي اقتراحات أو تعليقات!

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

المحلول

وهذا هو أساسا ما هو مفتاح HKEY_CURRENT_USER\Software\Policies ل، أي مفتاح داخل جزء الخاصة بالمستخدم من التسجيل الذي هو افتراضيا للقراءة فقط للمستخدم نفسه.

وبموجب الاتفاقية التسلسل الهرمي رئيسيا ينبغي أن تكمل واحدة لديك بالفعل تحت HKEY_CURRENT_USER\Software، على سبيل المثال إذا تم تخزينها تفضيلات المستخدم العادية تحت HKEY_CURRENT_USER\Software\MyCompany\MyProgram ثم تفضيلات المستخدم المحمية (أو "سياسات" في MS لغة) يجب أن يتم تخزين تحت HKEY_CURRENT_USER\Software\Policies\MyCompany\MyProgram

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

نصائح أخرى

إن مفهوم منطقة الإعدادات لكل مستخدم والتي لا يمكن للمستخدم تغييرها ليس له معنى حقًا - إذا كانت إعدادات المستخدم، تتوقع "أنت" (المستخدم) أن تكون قادرًا على تغييرها.

يمكنني التفكير في بديلين:

  • اكتب الإعدادات الخاصة بك في HKLM ، ولكن لديك إعداد مختلف لكل مستخدم وإعداد احتياطي عالمي للمستخدمين دون تعيين الإعداد
  • اكتبها في HKCU ، ولكن استخدم واجهات برمجة تطبيقات أمان التسجيل لمنعها من الكتابة إليها.ربما ستحتاج إلى أذونات أكبر من أذوناتهم لمنعهم من التراجع عن تغييرات الإذن.لا أحب هذا الخيار حقًا ، ولكن إذا كنت تريد متابعته ، فربما تريد أن تبدأ بـRegGetKeySecurity وRegSetKeySecurity واجهات برمجة التطبيقات. هذا المقال قد تكون مثيرة للاهتمام كذلك.

أنا شخصياً أعتقد أن الخيار الأول سيكون الأسهل، وسيتضمن أيضًا أشياء أقل مراوغة في شجرة التسجيل الخاصة بالمستخدم.امل ان يساعد!

وماذا عن اثنين من الإعدادات؟

1) تعيين العلم في HKLM موضحا أن للقراءة فقط هو السلوك الافتراضي على هذا الجهاز.

2) للحصول على أي المستخدمين الذين يحتاجون إلى الوصول الكامل، وتحديد رمز في HKCU التي تمكن من الوصول الكامل.

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

لماذا لا تقوم بتخزين الخيارات في قاعدة البيانات الخاصة بك؟ فإنه يبدو من المعقول ومفيد بما فيه الكفاية (على الأقل بالنسبة لي 8)) لا مشاكل مع جعل نسخة "محمول" من المنتج الخاص بك. لا يكلف نفسه عناء المستخدمين أية إعدادات كنت لا تريد لهم أن يكلف نفسه عناء.

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

  • خذ أحد الملفات المرفقة مع برنامجك، والذي لا ينبغي تغييره (على الأقل ليس من قبل المستخدم المقيد).إذا لم يكن هناك مثل هذا الملف، قم بإنشاء واحد فقط لهذا الغرض.
  • اسمح للمسؤول بتعيين حقوق القراءة فقط لهذا الملف لهؤلاء المستخدمين المقيدين.
  • في البرنامج، تحقق مما إذا كان لديك حق الوصول للكتابة إلى هذا الملف.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top