ما هو أفضل موقع للحفاظ على ملف تكوين البرنامج في Windows؟

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

سؤال

يتطلب برنامجي أن يتم الاحتفاظ ببعض تفاصيل التكوين في ملف .ini. يقوم هذا البرنامج أيضا بتثبيت الملحقات إلى IE و Firefox وأريد قراءة ملف .ini هذه من هذه الملحقات أيضا. إذا ظللت .ini في "... AppData / Roaming ..." إن تمديد IE في الوضع المحمي لن يكون قادرا على القراءة / الكتابة. بقدر ما أعرف فقط APPDATA / LOKALLAMALL يمكن أن يكون فقط قادرا على القراءة في الوضع المحمي. إذا كنت أتحرك كل تفاصيل التكوين الخاصة بي إلى هذا "... APPDATA / LOCALLOE ..." هل سيعمل جميع الأوقات؟ هل هذه هي الطريقة STD؟ كل ما كتبته في سياق فيستا، هل سيعمل مع XP؟ Win7؟

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

المحلول

انظر إجابتي لهذا السؤال: كيفية تحديد مكان تخزين الدولة لكل مستخدم؟ التسجيل؟ معلومات التطبيق؟ مخزن معزول؟

إلى اقتباس من هناك:

ملفات في مجلد "التجوال" الخاص بالمستخدم في نظام التشغيل Vista أو "بيانات التطبيق" في XP تنتقل مع المستخدم - لذلك يجب تخزين أي إعدادات وبيانات هناك.

الملفات الضمنية تحت "Local" و "LOCALLAMALLOM" في نظام التشغيل Vista و "الإعدادات المحلية" في XP لا، لذلك إنه مكان جيد لملفات TEMP، والأشياء المرتبطة بالكمبيوتر أو البيانات المحددة التي يمكن إعادة حسابها.

في نظام التشغيل Vista، كجزء من ميزات الأمان الجديدة نعلم جميعا وحبنا، يمكنك الحصول على برامج تعمل في "وضع سلامة منخفضة" (على سبيل المثال IE في الوضع المحمي)، تقوم هذه البرامج بتشغيل امتيازات مخفضة ولا يمكنك الوصول إلى الملفات ملف تعريف المستخدم - باستثناء الملفات ضمن مجلد "LOKALLALL".

لذلك، في الختام، يتم تخزين الملفات المخزنة في "LOKAMARL" غير آمن وملفات في "الإعدادات المحلية المحلية" / "الإعدادات المحلية" غير متوفرة في بعض الشركات الكبيرة - لذلك ما لم يكن لديك سبب وجيه ونعرف بالضبط ما تفعله بالضبط "التجوال" / "بيانات التطبيق".

تحديث:

  1. عند استخدام التجوال الملف الشخصي (بيئات التعاون الكبير) قد تختفي محتوى LOKALLAMALLAMOM (وسوف) دون إشعار.
  2. هذه هي جميع إعدادات لكل مستخدم، إذا كان الخادم الخاص بك يعمل ضمن حساب مختلف عن المستخدم (على سبيل المثال، النظام أو الشبكة)، فسوف يحصلون على نسخ مختلفة من هذه المجلدات.

نصائح أخرى

للحصول على مسار مجلد لبيانات البرنامج، يجب عليك استخدام Winapi:

wchar_t path_buf[MAX_PATH];
SHGetFolderPath( NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, &path_buf[0] );

في وظيفة Windows Vista تم استبدال shgetflderderpath shgetknownfoldedpath.. وبعد هذه الوظيفة القديمة الآن ببساطة غلاف ل shgetnyfolderderpath.

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