سؤال

أحاول إنشاء برنامج تثبيت Windows باستخدام Nullsoft Install System الذي يتطلب التثبيت بواسطة المسؤول.يقوم المثبت بإنشاء دليل "السجلات".وبما أن المستخدمين العاديين يمكنهم تشغيل هذا التطبيق، فيجب أن يكون هذا الدليل قابلاً للكتابة بواسطة المستخدمين العاديين.كيف يمكنني تحديد أنه يجب أن يكون لدى جميع المستخدمين إذن للوصول للكتابة إلى هذا الدليل في لغة البرنامج النصي NSIS؟

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

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

المحلول

استخدم ال صلاحية التحكم صلاحية الدخول plugin ثم قم بإضافة هذا إلى البرنامج النصي، حيث يوجد دليل "السجلات" في دليل التثبيت.

AccessControl::GrantOnFile "$INSTDIR\logs" "(BU)" "FullAccess"

وهذا يتيح الوصول الكامل إلى المجلد لجميع المستخدمين.

نصائح أخرى

AccessControl::GrantOnFile "<folder>" "(BU)" "FullAccess" لم يعمل معي على جهاز يعمل بنظام Windows Server 2008.بدلا من ذلك اضطررت لاستخدام هذا:

AccessControl::GrantOnFile "<folder>" "(S-1-5-32-545)" "FullAccess"

S-1-5-32-545 يعادل "المستخدمون" وفقًا لـ http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q243330

بدلاً من تغيير الأذونات على الدلائل ضمن ملفات البرامج، لماذا لا تضع السجلات في موقع يمكن لجميع المستخدمين الكتابة فيه.

راجع قسم 4.9.7.7 SetShellVarContext في وثائق NSIS الخاصة بك.يمكنك استخدامه مع $APPDATA للحصول على مجلد بيانات التطبيق القابل للكتابة لجميع المستخدمين.

إنها مشكلة قديمة الآن ولكن كما اقترح دليل Sören APPDATA فهي طريقة رائعة للقيام بما تريد، الأمر هو:لا تأخذ بيانات APPDATA الشخصية للمستخدم بل تأخذ بيانات APPDATA "جميع المستخدمين"!بهذه الطريقة سيتمكن أي شخص من الوصول إلى ملف السجل ;-)

قرأت أيضًا في مكان ما أن استخدام (BU) في GrantOnFile لا يعمل بشكل جيد مع بعض الأنظمة (Win 7 x64 إذا كنت أتذكر جيدًا)، ربما يجب عليك استخدام SID "(S-1-5-32-545)" بدلاً من ذلك (إنه SID لجميع المستخدمين، وهذه القيمة ثابتة في كل نظام تشغيل Windows)

طريقة واحدة:اتصل بالصدفة واستخدمها cacls أو xcacls.

لماذا لا تقوم بإنشاء دليل سجل في دليل %APPDATA% الخاص بالمستخدم؟هل تحتاج حقًا إلى وضع كافة السجلات في دليل التثبيت؟لماذا؟

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