Vista

2009-10-10 6 views
5

के तहत सभी उपयोगकर्ताओं के लिए सेटिंग सहेजने के लिए कैसे करें मुझे उस सेटिंग को सहेजने की आवश्यकता है जो बाद में दी गई मशीन पर एप्लिकेशन के सभी उपयोगकर्ताओं के लिए उपलब्ध हो। इसे Vista/Win 7 पर काम करने की आवश्यकता है, और एप्लिकेशन व्यवस्थापक के रूप में शुरू नहीं किया जाएगा।Vista

  • कार्यक्रम निर्देशिका के रूप में प्रोग्राम फ़ाइलें फ़ोल्डर Vista पर सुरक्षित है करने के लिए सहेजा नहीं जा सकता
  • कि संरक्षित के रूप में HKEY_LOCAL_MACHINE नहीं सहेजी जा सकती भी
  • सर्वर या नहीं सहेजी जा सकती वेब सेवा

मैं डेटा को कहां से सहेज सकता हूं? भले ही आवेदन अधिकार किसी भी तरह निष्पादन के दौरान उठाए गए हों, मेरी चिंता यह है कि रजिस्ट्री अब Vista में वर्चुअलाइज्ड है - और इसलिए मैं एक विशेष HKEY_LOCAL_MACHINE के साथ समाप्त हो जाऊंगा जो वास्तव में केवल वर्तमान उपयोगकर्ता के लिए है।

मैं नेट

उत्तर

9

समान अनुप्रयोग डेटा

System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) 

यह एक फाइल सिस्टम रास्ता है कि आप एकाधिक उपयोगकर्ताओं और ऑपरेटिंग सिस्टम के कई संस्करण भर में डेटा को बचाने के लिए उपयोग कर सकते हैं का उपयोग कर रहा हूँ। पथ संस्करण के आधार पर भिन्न हो सकता है लेकिन क्योंकि आप पर्यावरण चर का उपयोग कर रहे हैं, उपर्युक्त रेखा उपयोग करने योग्य पथ को हल करेगी।

संपादित करें:
एक नोट के रूप में जोड़ना है, क्योंकि यह केवल निहित था चाहता था; इस निर्देशिका में लिखने के लिए इसे उन्नत अनुमतियों की आवश्यकता नहीं है, यह वास्तव में इस उद्देश्य के लिए है।

+0

Awsome! ठीक वही जो मेरे द्वारा खोजा जा रहा था। धन्यवाद! –

8

चूंकि क्विंटिन ने सही ढंग से उत्तर दिया,% ALLUSERSPROFILE% पथ (पर्यावरण.SpecialFolder.CommonAplicationData .NET में) वह है जिसे आप ढूंढ रहे हैं।

दो महत्वपूर्ण बातों को ध्यान में रखना है, हालांकि, ऐसा करते हुए:

  • यह आपकी कंपनी और आवेदन अपने आवेदन इंस्टॉलर का उपयोग के लिए एक सबफ़ोल्डर बनाने के लिए अच्छी आदत है। उदा:

    Dim DataPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) 
    DataPath = IO.Path.Combine(DataPath, "ACME Corp.") 
    DataPath = IO.Path.Combine(DataPath, "Widget App") 
    DataPath = IO.Path.Combine(DataPath, "1.0") '//Optional, but possibly handy to easily migrate configuration files across major app versions 
    
  • हालांकि सभी उपयोगकर्ताओं आपके द्वारा बनाए गए फ़ोल्डर में पढ़ने की जाएगी, लिखने का उपयोग डिफ़ॉल्ट खाता उस फ़ोल्डर, साथ ही प्रशासक समूह और स्थानीय सिस्टम के सदस्य बनाए गए करने के लिए सीमित कर रहा है। यदि सभी उपयोगकर्ता एक सामान्य कॉन्फ़िगरेशन फ़ाइल को संशोधित करने में सक्षम होना चाहिए (एक उपयोगकर्ता द्वारा बनाया गया है, लेकिन किसी अन्य गैर-व्यवस्थापक उपयोगकर्ता द्वारा पुनः लिखा गया है), तो आपको इस पहुंच को स्पष्ट रूप से व्यवस्थित करने की आवश्यकता होगी।

    Dim di As New IO.DirectoryInfo(DataPath) 
    Dim ds = di.GetAccessControl 
    ds.AddAccessRule(New Security.AccessControl.FileSystemAccessRule(...)) 
    di.SetAccessControl(ds) 
    
+0

धन्यवाद, यह निश्चित रूप से मुझे बाहर पकड़ा होगा! –

-1

यहाँ एक वैकल्पिक हल आप सभी के लिए सेटिंग्स जारी रहती है की सुविधा देता है: फिर, यह आपके ऐप का श्रेष्ठ संस्थापक से किया जाता है, लेकिन साथ ही कोड से किया जा सकता है उदाहरण के लिए, अपने ऐप के पहली बार चलाने है उपयोगकर्ता:

  1. प्रोग्राम फ़ाइलों में एक सेटिंग फ़ाइल को अपने एप्लिकेशन द्वारा पढ़ने के लिए रखें।
  2. इस सेटिंग फ़ाइल को संशोधित करने के लिए, सेटिंग्स फ़ाइल को लिखने के लिए डिज़ाइन किया गया एक नया एप्लिकेशन बनाएं।
  3. लॉन्च इस सेटिंग क्रिया 'के रूप में चलाने' पर सेट के साथ अपने मुख्य अनुप्रयोग से एप्लिकेशन को संशोधित करने

    Process p = new Process(); 
    p.StartInfo = new ProcessStartInfo("changeXMLSettings.exe"); 
    p.StartInfo.Verb = "runas"; 
    p.Start(); 
    

इस ऊंचाई के लिए संकेत और प्रोग्राम फ़ाइलों में लिखने के लिए ऐप को अनुमति संशोधित सेटिंग्स दे देंगे निर्देशिका।

+0

ध्यान में रखते हुए कि हमारे पास पहले से ही एक पूर्ण (और अधिक सही) समाधान है, जिसे 4 साल पहले पोस्ट किया गया था, आप कभी भी इस कामकाज का उपयोग क्यों करना चाहेंगे? –

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