8

मुझे किसी एप्लिकेशन की कुछ सेटिंग चाहिए जो कंप्यूटर के सभी उपयोगकर्ताओं के बीच साझा की जाएगी, लेकिन रन टाइम पर भी बदला जा सकता है। वह सीम सरल है, लेकिन Application Settings MSDN article के अनुसार, यह या तो एक या दूसरे है।रन उपयोगकर्ताओं पर साझा किए जा सकने वाले सभी उपयोगकर्ताओं को साझा की गई एप्लिकेशन सेटिंग्स कैसे प्राप्त करें

  • आवेदन-दायरे वाले सेटिंग्स इस तरह के एक वेब सेवा या एक डेटाबेस कनेक्शन स्ट्रिंग के लिए एक यूआरएल के रूप में जानकारी के लिए इस्तेमाल किया जा सकता:

    आवेदन दो प्रकार की सेटिंग, गुंजाइश के आधार पर कर रहे हैं। ये मान एप्लिकेशन से जुड़े हुए हैं। इसलिए, उपयोगकर्ता उन्हें रन टाइम पर नहीं बदल सकते हैं।

  • उपयोगकर्ता-स्कोप्ड सेटिंग्स का उपयोग किसी फ़ॉर्म की अंतिम स्थिति या फ़ॉन्ट वरीयता जैसे जानकारी के लिए किया जा सकता है। उपयोगकर्ता इन मानों को रन टाइम पर बदल सकते हैं।

मैं app.config एक्सएमएल फ़ाइल संपादित करने के लिए कोड लिख सकता है, लेकिन चूंकि यह कार्यक्रम निर्देशिका में स्थित है, यह विंडोज़ के तहत संरक्षित है 7. तो यह संभव नहीं कार्यक्रम को ऊपर उठाने या NTFS के साथ खेल के बिना है अधिकार।

इसलिए मुझे कॉन्फ़िगरेशन फ़ाइल को System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) जैसे सामान्य फ़ोल्डर में लिखा जाना चाहिए।

लेकिन यह एक आम आम आवश्यकता है!

तो, मैं सोच रहा हूं कि पहिया को पुनर्निर्मित किए बिना इसे प्राप्त करने का कोई आसान तरीका है, या अगर मुझे अपना सेटिंग प्रबंधक लिखना है।

उत्तर

4

मुझे एक ही समस्या है और मेरी खुद की सेटिंग्स कक्षा लिखना समाप्त हो गया है। यह बहुत बुनियादी था। मैंने अपनी आवश्यक गुणों के साथ एक सेटिंग क्लास बनाया है, और एक सेटिंग मैनेजर सेव() और लोड() विधियों के साथ जो फ़ाइल को एक्सएमएलएसरियललाइज़र के माध्यम से ऑब्जेक्ट को क्रमबद्ध/deserialized किया है।

हां, यह आपका स्वयं का कोड है, लेकिन यह बहुत ही सरल कोड है, यह पता लगाने की कोशिश करने से कम समय लगता है कि क्या एक घटक है जो आपको चाहिए और इसे कैसे अनुकूलित करें।

+0

क्या आप अपना कोड साझा कर सकते हैं? –

+0

यहां एक उदाहरण देखें कि यह कैसे करें: https://msdn.microsoft.com/en-gb/library/ms973902.aspx#persistappsettnet_creatingcustomclass – Simon

1

एप्लिकेशन सेटिंग्स आधारभूत संरचना इस का समर्थन नहीं करती है - केवल गैर-संपादन योग्य एप्लिकेशन डेटा और उपयोगकर्ता-स्कोप्ड डेटा समर्थित हैं। CommonApplicationData फ़ोल्डरों में, आप अपने डेटा को आसानी से पढ़ और लिख सकते हैं, हालांकि, एप्लिकेशन डेटा का उपयोग करने के बजाय।

+0

अगर मैं 'सेटिंग' द्वारा 'डेटा' को प्रतिस्थापित करता हूं तो यह समझ में आता है, लेकिन क्या आप अंतिम वाक्य पर विस्तार कर सकते हैं?आप मूल रूप से मतलब है कि मुझे अपना * सेटिंग प्रबंधक * लिखना होगा, यह सुनिश्चित करना कि मैंने कॉन्फ़िगरेशन फ़ाइल को 'CommonAplplicationData' में रखने के लिए एक फ़ोल्डर बनाया है और उस पर XML लिखना/पढ़ना है। ऐसी कक्षा नहीं है जिसे मैं आसानी से प्राप्त कर सकता हूं या इंटरफ़ेस मैं उस सामान को पूरा करने के लिए कार्यान्वित कर सकता हूं? – DavRob60

+0

@ DavRob60 नहीं - दुर्भाग्यवश, उस हैंडल में निर्मित "सेटिंग प्रबंधक" नहीं है। आप एक्सडीक्यूमेंट (http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx) का उपयोग कर सकते हैं और एक्सएमएल सरल से पढ़ने/लिखने के समान ही हो सकते हैं। –

+0

[सेटिंग्सप्रोवाइडर क्लास] (http://msdn.microsoft.com/en-us/library/system.configuration.settingsprovider%28v=vs.100%29.aspx) के बारे में क्या? क्या इसके चारों ओर निर्माण करने के लिए कुछ है, क्या यह कुछ पूरी तरह से अलग है या इससे परेशान करने की परेशानी नहीं है? – DavRob60

2

यहाँ जवाब पढ़ने और ConfigurationManager.Open तरीकों के साथ खेलने के बाद मैं निम्नलिखित के साथ समाप्त हो गया:

string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MyApp", "MyApp.config"); 
Configuration MyAppConfig = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = path }, ConfigurationUserLevel.None); 

अच्छा हिस्सा फ़ाइल मौजूद नहीं है, और आप उस पर Save() फोन करता है, तो, यह आपके लिए फ़ोल्डर और फ़ाइल बनाएगा। AppSettings["key"] हालांकि तो मैं

MyAppConfig.AppSettings.Settings["key"].Value 

उपयोग करने के लिए एक नया मान जोड़ने के लिए पढ़ सकते हैं और एक मौजूदा मूल्य और

MyAppConfig.AppSettings.Settings.Add("key", value) 

लिखना पड़ा काम नहीं किया।

संबंधित मुद्दे

 संबंधित मुद्दे