سؤال

حسنا إذا كنت أرغب في تخزين البيانات لآلة التطبيق واسعة فقط

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

وإذا كنت أرغب في تخزين البيانات لكل مستخدم أستخدمه

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

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

تحرير: لتوضيح ما قصدته إذا قمت بتثبيت التطبيق 2 مرات في مجلدات DifferNet ... وليس مثيلات تعمل آسف.

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

المحلول

أنا لا أعرف أي تطبيق آخر يفعل ذلك.

إذا قمت بتشغيل نسختين من Visual Studio، فأنا أتوقع أن تكون إعدادات المثيل الأخير مغلقة لتكون هي تلك المستمرة.

إذا قمت بتعيين مثيل معرف فريد (GUID)، كيف يمكنك إعادة استخدام القيمة التالية في المرة القادمة التي تقوم فيها بتشغيل التطبيق؟ أو هل ترغب في الحصول على مجموعة جديدة من القيم في كل مرة تقوم فيها بتشغيل التطبيق؟

إذا كنت تريد إعادة استخدامها، فيمكنك إنشاء أدلة فرعية مرقمة (1 و 2 و 3 و 4 وما إلى ذلك) وفي كل مرة تقوم فيها بتشغيل التطبيق كتابة ملف قفل لهذا الدليل. ثم تحقق من وجود ملف القفل وزيادة الرقم حتى تجد مجلد غير مؤمن.

تحديث

في ضوء التعليق أضيفت - لماذا لا تحصل على مسار قابل للتنفيذ وإنشاء مجلد ضمن ذلك؟

إذا لم يكن لدى المستخدم حقوقا في هذا المجلد، يجب عليك إنشاء نوع من التعيين بين الموقع و GUID (Say) الذي قمت بإلهاء إعدادات التطبيق وإعدادات المستخدم.

نصائح أخرى

لماذا لا تخزن البيانات في مسار Temp Directory.gettemppath. يمكنك استخدام مجلد فرعي للتطبيق الخاص بك ومجلد فرعي آخر (ربما يكون اسم GUID كما سيكون مفيدا) للمثيل الخاص بك. أود أن أقوم بتنفيذ بعض فئة المدير التي تنفذ غير مثبتة للسماح بإزالة مسار المثيل عند إيقاف تشغيل التطبيق.

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

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

ثم عندما تريد الوصول إلى الملفات الخاصة بهذه النسخة المحددة من التطبيق، ما عليك سوى استخدام

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "\" + uniqueid);

أو

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "\" + uniqueid);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top