أين يتم تخزين البيانات القابلة للكتابة ليتم مشاركتها من قبل جميع المستخدمين في مثبت فيستا؟

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

سؤال

تم تثبيت تطبيقي عبر NSIS.

أريد أن يقوم المثبت بتثبيت البرنامج لجميع المستخدمين.

يمكنني القيام بذلك عن طريق التثبيت في دليل "ملفات البرنامج".

يوجد ملف قاعدة بيانات (firebird)، يجب أن تشاركه جميع حسابات المستخدمين على النظام.

إذا قمت بتخزين ملف قاعدة البيانات هذا في دليل "ملفات البرنامج" فسيتم قراءته فقط.

إذا قمت بتخزينها في دليل APPDATA للمستخدمين، فسيكون لكل منهم نسخة مختلفة، وعندما يضيف أحد المستخدمين البيانات، لن يراها الآخرون.

الخيار 1 - في دليل التطبيق الخاص بي ضمن "ملفات البرنامج"، قم بإنشاء دليل "بيانات"، في برنامج التثبيت الخاص بي، اجعل هذا الدليل قابلاً للقراءة والكتابة من قبل الجميع، وبهذه الطريقة لن يتم تشغيل المحاكاة الافتراضية "لملفات البرنامج" للمستخدم ويمكن لجميع المستخدمين التحديث الملف ورؤية التغييرات لبعضهم البعض.

أي خيارات أخرى؟

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

المحلول

يجب تخزين البيانات الخاصة بجميع المستخدمين في %ALLUSERSPROFILE%، أو الاتصال بـ SHGetFolderPath() باستخدام المعلمة CSIDL_COMMON_APPDATA للحصول على مساحة تخزين كافة المستخدمين.

يرى http://www.deez.info/sengelha/2006/02/28/windows-vista-changes/ لمزيد من التفاصيل.

نصائح أخرى

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

على وجه التحديد سأستخدم:

SetShellVarContext all
SetOutPath $APPDATA
File "MyInsecurelySharedFile.txt"

انظر مرجع البرمجة النصية NSIS لمزيد من المعلومات.

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