سؤال

في طلبي أنا بحاجة لتخزين إعدادات 'العالمية' (أيلا مستخدم معين) في المعروف و يمكن التنبؤ بها الموقع.

أريد التطبيق لتكون قادرة على تشغيل من أي مكان (كمستخدم قياسي ، وليس مدير) ، بما في ذلك نسخ متعددة من أماكن مختلفة و تكون قادرة على القراءة والكتابة حفظ ملفات التكوين.

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

مع هذا في الاعتبار, أربعة خيارات الإشارة هنا غير مناسبة:http://msdn.microsoft.com/en-us/library/bb206295(مقابل.85).aspx#ID0E1BA

فما هي البدائل ؟

طلبي هو مكتوب في C++ على نظام ويندوز فقط.أنا بحاجة إلى دعم ويندوز XP وما فوق.

شكرا

تحرير:

للتوضيح تجاهل شروط السباق الناجمة عن حالات متعددة.هذا السؤال هو فقط أن تفعل مع مكان تخزين البيانات.أنا لا أرى في أي مكان مناسب وهذا هو:

  1. يمكن التنبؤ بها (مثلا ، %APPDATA%\فو هو 'يمكن التنبؤ بها' المسار ولكن للأسف الخاصة بالمستخدم)
  2. العالمية (مثلا ، %PROGRAMDATA%\فو عالمية المسار ولكن للأسف فقط إنشاء مستخدم لديه حق الوصول)
  3. يسرا (المعيار المستخدم يجب أن يكون قادرا على إنشاء ملفات جديدة في دليل معين ، وهذا ينطبق على جميع المستخدمين على النظام)
هل كانت مفيدة؟

المحلول

إذا قررت أن CSIDL_COMMON_APPDATA ليست مناسبة (ربما CSIDL_COMMON_APPDATA هو جيد default, ولكن تريد مدير البرنامج أن تكون قادرة على تغيير الموقع) يمكن أن يكون المثبت أكتب شيئا إلى HKLM\SOFTWARE\<your app subkey> الذي يشير إلى المسار المطلوب المشتركة الدليل الذي سوف يعقد البيانات.

بديل وضع المؤشر في التسجيل HKLM هو أن يكون config الموجود في دليل البرنامج الذي يحتوي على مؤشر إلى الدليل المشترك.تعريف برنامج الدليل يجب أن للكتابة من قبل المثبت ، إنه قابل للكتابة من قبل المسؤولين (الذين قد تكون مسؤولة عن تعديل التكوين) و هو قابل للقراءة من قبل المستخدمين.حتى القياسية يمكن للمستخدم قراءة معروفة موقع (إما HKLM sub-key أو config في دليل البرنامج) للحصول على مؤشر إلى دليل للكتابة من قبل جميع المستخدمين القياسيين.

ما يضع الدليل الشائعة (تثبيت برنامج أو وحدة التكوين) سوف تحتاج إلى تأكد من الدليل الشائعة ACL هو مناسب لهذا المعيار المستخدم يكتب.

نصائح أخرى

محاولة المجلد العمومي في التشكيلات الجانبية للمستخدم الدليل:

CSIDL_COMMON_DOCUMENTS

تحرير:أو استخدام

CSIDL_COMMON_APPDATA

ولكن تعيين أذونات إلى مجموعة مصادقة المستخدمين إذا كان ذلك ممكنا.

ربما كنت تبحث عن CSIDL_COMMON_APPDATA.IIRC التي ينبغي أن تكون أيضا خيارا جيدا أن تذهب لأي من شعار Windows الشهادات.في حالة أنها لا تناسب الاحتياجات الخاصة بك ، تحقق هذا الرابط على MSDN, ، يجب أن تكون قادرة على العثور على أفضل تناسب الاحتياجات الخاصة بك هناك.
حظا سعيدا.

ألا يمكنك فقط استخدام ثابت اسم الدليل مثلا ، c:\FixedDataForYourProgram

ونحن نفعل ذلك على XP.لقد حاولت هذه برمجيا على Vista/Win7, ولكن تسجيل الدخول كمستخدم قياسي على ويندوز فيستا لدي أي مشكلة إنشاء الدليل تحت الجذر.

أنا متأكد من أن هذا يكسر كل أنواع القواعد ، لكنها بسيطة.أنا أحب البساطة.

الخيارات:

  1. الملف مزامنة التحكم في الوصول إلى الملف
  2. قاعدة بيانات لتخزين الإعدادات
  3. خدمة ويب لتخزين الإعدادات التي يمكن التعامل مع التزامن
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top