मुख्य रूप से विंडोज़ के लिए एप्लिकेशन सेटिंग्स को संग्रहीत करने के लिए एक मानक मानक तरीका है, लेकिन अन्य प्लेटफ़ॉर्म पर जाने के लिए भी आसान है।एप्लिकेशन सेटिंग्स
वहाँ मूलतः सेटिंग्स के 4 समूहों है मैं करना चाहते हैं:,
- वैश्विक सेटिंग सभी उपयोगकर्ताओं को प्रभावित है, और मशीनों के बीच
- वैश्विक सिस्टम सेटिंग से ले जाया जा सकता है, सभी उपयोगकर्ताओं को प्रभावित है, लेकिन यह प्रणाली के लिए विशिष्ट (उदाहरण के लिए ग्राफिक्स विकल्प, उदाहरण के लिए ग्राफिक्स विकल्प)
- उपयोगकर्ता सेटिंग्स, उपयोगकर्ता सेटिंग्स जो सिस्टम (जैसे ध्वनि मात्रा)
- उपयोगकर्ता सिस्टम सेटिंग्स, उस सिस्टम के लिए विशिष्ट उपयोगकर्ता सेटिंग्स (जैसे ग्राफिक्स विकल्प जो हार्डवेयर निर्भर हैं))
प्रत्येक स्तर पिछले स्तर को ओवरराइड करता है, जो "वैश्विक सेटिंग्स" को बड़े पैमाने पर अनुप्रयोगों के डिफ़ॉल्ट होने की इजाजत देता है, उपयोगकर्ता सेटिंग्स द्वारा चुने गए विकल्पों को संग्रहीत करने के साथ। पहले दो मूल रूप से डिफ़ॉल्ट होंगे जहां उपयोगकर्ता सेटिंग नहीं है (उदाहरण के लिए एक नए उपयोगकर्ता के लिए)।
मैंने कार्यों के एक सेट को लागू करने पर विचार किया, जिसे मैं विभिन्न प्रणालियों (आईएनआई फाइलों के माध्यम से होने की संभावना) के लिए लागू कर सकता था, लेकिन क्या यह सबसे अच्छा तरीका है?
(C++)
namespace config
{
void Init(const std::string &AppName);
//updates config for keys/sections that don't exist (ie don't overwrite changes by advanced users by rewriting the entire file)
void Defaults (std::map<std::string,std::map<std::string,std::string> > &Map);
void SystemDefaults (std::map<std::string,std::map<std::string,std::string> > &Map);
void Set (const std::string &Section, const std::string &Key, const std::string &Value);
void SetSystem (const std::string &Section, const std::string &Key, const std::string &Value);
void SetUser (const std::string &Section, const std::string &Key, const std::string &Value);
void SetUserSystem (const std::string &Section, const std::string &Key, const std::string &Value);
std::string GetValue (const std::string &Section, const std::string &Key);
}
मैं जानता हूँ कि खिड़कियां इस तरह सेटिंग्स के लिए निर्देशिका का एक सेट है, लेकिन मेरी जरूरतों के लिए इन सही dirs हैं?
संपादित करें: मैं विंडोज़ पंजीकरण के बजाय फ़ाइलों (आईएनआई या एक्सएमएल) के साथ जाऊंगा। हालांकि इन कॉन्फ़िगरेशन फ़ाइलों को प्रत्येक ओएस के तहत रखने के लिए सबसे अच्छे स्थान हैं?
विस्टा के तहत मुझे ये मिला, जो मेरे समूहों में फिट लगते हैं, हालांकि पुराने विंडोज संस्करणों (मुझे win2000, XP, आदि का समर्थन करने की आवश्यकता है), और मैक/लिनक्स के पास अपने सिमेलर फ़ोल्डर्स हैं?
- वैश्विक सेटिंग - <SYSDRIVE> \ Users \ डिफ़ॉल्ट \ AppData \
- वैश्विक सिस्टम सेटिंग रोमिंग - <SYSDRIVE> \ Users \ डिफ़ॉल्ट \ AppData \ Local
- उपयोगकर्ता सेटिंग - <SYSDRIVE> \ Users \ < उपयोगकर्ता > \ AppData \
- उपयोगकर्ता सिस्टम सेटिंग रोमिंग - <SYSDRIVE> \ Users \ < उपयोगकर्ता > \ AppData \ Local
अच्छी फ़ाइलें मेरे पसंदीदा तरीके हैं, क्योंकि वही सामान छोटे प्लेटफ़ॉर्म वाले सभी प्लेटफॉर्म पर काम करेगा। मुख्य समस्या यह है कि फाइलें होनी चाहिए, और एक साफ इंटरफ़ेस कैसे प्रदान करें (उदाहरण के लिए माइक्रोसॉफ्ट एप्स नहीं चाहता ऐप्स में फ़ाइलों के साथ काम कर रहे हैं ... आईडी% username% .ini से खुश रहें)। –