2009-09-20 11 views
12

मैं एक बाहरी एक्सएमएल डेटा फ़ाइल को बाहरी ड्राइव में सहेज रहा हूं, कोई जांच नहीं। लेकिन फिर मैंने एप्लीकेशनडाटा फ़ोल्डर और अन्य का उपयोग करने की कोशिश की, यहां तक ​​कि सी: \ लेकिन कोई किस्मत नहीं। मुझे "पथ तक पहुंच" जैसे त्रुटि मिल रही है: \ "अस्वीकृत"।"पथ तक पहुंच ... अस्वीकार कर दी गई है" (.NET C#)

बस पुष्टि करने के लिए, फ़ाइल को बाहरी ड्राइव पर वर्तमान कोड के साथ बनाया गया है और ठीक पढ़ा गया है। मुझे लगता है कि सुरक्षा & अनुमतियों के साथ ऐसा कुछ है लेकिन मुझे कुछ भी उपयोगी नहीं मिला है।

अग्रिम धन्यवाद यदि आप मुझे इस पर सही दिशा में इंगित कर सकते हैं!

 string fipData = @"F:\IL2\SIIYM\SIIYM Data.xml"; // external drive ok :-) 
     //string fipData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
     //string fipData = @"C:\"; 

     // if the XML data file doesn't exist, create it 
     bool dataFileExists = File.Exists(fipData); 
     if (dataFileExists) 
     { 
      // read the XML values 
      XDocument xData = XDocument.Load(fipData); 
      //... 
     } 
     else 
     { 
      // create & save the XML data file 
      XElement xLastPath = new XElement(el_lastPath, ""); 
      XElement xLastCode = new XElement(el_lastCode, ""); 

      XElement xRoot = new XElement(el_root); 
      xRoot.Add(xLastPath); 
      xRoot.Add(xLastCode); 

      XDocument newDataFile = new XDocument(); 
      newDataFile.Add(xRoot); 

      try 
      { 
       newDataFile.Save(fipData); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Data file unable to be created. System message:{0}".Put(Environment.NewLine + Environment.NewLine + ex.Message)); 
      } 
     } 
+0

उम्म ... मुझे नहीं पता कि क्यों, लेकिन आज सुबह जागने पर, यह एप्लिकेशनडाटा के लिए काम करता है। यह जानना अच्छा लगेगा क्यों। डीबग से रिलीज बिल्ड में बदलते समय मुझे कुछ समस्या थी। मैं केवल यह मान सकता हूं कि यह उससे संबंधित था। आपके विचारों के लिए सभी को धन्यवाद! – MrGreggles

+0

आपके नमूना कोड में टिप्पणी की गई "fipData" घोषणा वास्तव में एक फ़ाइल नाम निर्दिष्ट नहीं करती है - बस पथ। क्या यह एक टाइपो है? –

+0

ब्लश मैट, जो कारण हो सकता है। लंबा दिन, मस्तिष्क जैप। सभी लोगों को आपके विचारों के लिए धन्यवाद! – MrGreggles

उत्तर

2

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

+0

ओह, यहां संदर्भ है: * मेरा व्यक्तिगत पीसी * विंडोज 7 * डेस्कटॉप ऐप क्या यह सिर्फ मेरी यूएसी सेटिंग्स (डिफ़ॉल्ट) बहुत अधिक है? मुझे कैसे पता चलेगा कि यह किसी अन्य व्यक्ति के कंप्यूटर पर काम करेगा या नहीं? – MrGreggles

1

अधिकतर बाहरी ड्राइव एफएटी के साथ बनाई गई है। एफएटी उपयोगकर्ताओं के लिए अधिकार प्रबंधन का समर्थन नहीं करता है, इसलिए वहां बचत करना ठीक है।

इसके अलावा आईआईएस उपयोगकर्ता एडम की तरह पहले से ही

11

उल्लेख किया एक और जवाब देने के लिए टिप्पणियों में अन्य फ़ोल्डर के लिए कोई अधिकार नहीं है कि आप कहते हैं कि यह एक डेस्कटॉप अनुप्रयोग है, इसलिए देता है प्रत्येक स्थान के लिए अलग से व्यवहार करते हैं।

विस्टा और उससे परे के तहत, सामान्य उपयोगकर्ता को सिस्टम ड्राइव की रूट निर्देशिका (आमतौर पर सी :) में फ़ाइलों को बनाने का अधिकार नहीं है। आप सी: \ में एक्सप्लोरर खोलकर, दायाँ क्लिक करके और फ़ाइल बनाने की कोशिश कर इसे अपने लिए देख सकते हैं - आपको यूएसी प्रॉम्प्ट प्राप्त करना चाहिए। तो यदि आप सी: \ को लिखना चाहते हैं, तो आपके आवेदन को एक उपयुक्त मैनिफेस्ट मांग ऊंचाई के माध्यम से, या उस स्थान पर लिखना चाहते समय एक अलग प्रक्रिया शुरू करके, व्यवस्थापक के रूप में चलाने की आवश्यकता है।

आवेदन डेटा, पर्यावरण। SpecialFolder.AplicationData हालांकि काम करना चाहिए। यदि आप वास्तविक निर्देशिका को आउटपुट करते हैं जो आपको देता है तो आपको क्या मिलता है?

+0

उत्तर के लिए धन्यवाद! पर्यावरण। SpecialFolder.AplicationData: सी: \ उपयोगकर्ता \ MrGreggles \ AppData \ रोमिंग \ SIIYM Data.xml – MrGreggles

+0

यह अब काम करता है, मुझे क्यों धड़कता है। – MrGreggles

+2

ऐपडाटा हमेशा काम करना चाहिए, यह बहुत अजीब है! – blowdart

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