2012-05-18 13 views
8

मुझे पता है कि इस पर सामान का एक टन पहले से ही है और कुछ चीजों की कोशिश की है लेकिन इसे ठीक करने में कोई भाग्य नहीं है।पथ तक पहुंच **** को अस्वीकार कर दिया गया है

मेरे पास एक सी # प्रोग्राम है जिसने एक XML दस्तावेज़ बनाया है और मैं इसे MyDocuments में किसी फ़ोल्डर में सहेजने की कोशिश कर रहा हूं। XMLDoc.Save फ़ंक्शन को कॉल करते समय मुझे folliwing अपवाद मिल रहा है।

पथ तक पहुंच 'सी: \ Users \ ऐश \ दस्तावेज़ \ ConfigOutput'

से इनकार किया है मैं दृश्य स्टूडियो व्यवस्थापक के रूप में चल रहा है। इसे ठीक करने के तरीके पर कोई विचार?

मैंने डेस्कटॉप पर और सी: \ फ़ोल्डर के रूप में सहेजने की कोशिश की है।

मैं खिड़कियों 7.

बनाया निष्पादन योग्य चल रहा है उपयोग कर रहा हूँ भी does not काम करने लगते हैं।

माफी मांगने वाले लोग ऐसा लगता है कि मैं बेवकूफ था। मैंने वास्तव में आउटपुट पथ में एक फ़ाइल नाम नहीं जोड़ा था। इस सवाल से मैं किसी और को नहीं कर दूंगा! सभी मदद/टिप्पणियों के लिए धन्यवाद।

+0

आप सी या किसी अन्य की जड़ तक यह बचत की कोशिश की है फ़ोल्डर? यह उपयोगकर्ताओं के फ़ोल्डर्स पर यूएसी और अनुमतियों के साथ एक मुद्दा हो सकता है - क्या यह Win7 या Vista पर है? – Charleh

+0

दृश्य स्टूडियो की बजाय ऐप को व्यवस्थापक के रूप में चलाने का प्रयास करें। –

+1

आप किस फ़ाइल नाम निर्दिष्ट कर रहे हैं? – Richard

उत्तर

9

कुछ संभावनाएं हैं:

  • ConfigOutput एक फ़ोल्डर
  • ConfigOutput है एक फाइल है कि है उपयोग में (खोला गया)
  • आप उपयोगकर्ता 'एश'
के रूप में लॉग इन नहीं हैं

आपको आमतौर पर अपने दस्तावेज़ फ़ोल्डर में लिखने के लिए व्यवस्थापक के रूप में नहीं चलना चाहिए।

+5

कॉन्फ़िगर आउटपुट एक फ़ोल्डर था ..... ओउप्स! – user589195

+1

मेरे मामले में, फ़ाइल केवल पढ़ी गई थी। – toddmo

1

अपने ऐप को व्यवस्थापक के रूप में चलाने का प्रयास करें।

यदि आप अपने ऐप को डीबग करना चाहते हैं, तो अपने विजुअल स्टूडियो को व्यवस्थापक के रूप में भी शुरू करें। How do I force my .NET application to run as administrator?

पी.एस.:

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

1

मुझे नहीं पता कि इससे कोई फर्क पड़ता है, लेकिन आप फ़ोल्डर को पूर्ण तरीके से एक सापेक्ष में निर्दिष्ट करना चाहते हैं: Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) आपको प्रदान करेगा वर्तमान उपयोगकर्ता के दस्तावेजों का मार्ग। जांचें कि यह आपके द्वारा प्रदान किए जाने वाले से अलग है या नहीं।

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

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

आप पहले <requestedExecutionLevel level="asInvoker" uiAccess="true|false"/> आजमा सकते हैं और प्रगतिशील रूप से highestAvailable और requireAdministrator पर जा सकते हैं।

वैकल्पिक रूप से, अनुमतियों की मांग करते हैं अपवाद को पकड़ने और उसे प्रिंट:

try { 
     FileIOPermission fileIOPermission = new FileIOPermission(FileIOPermissionAccess.AllAccess, myDocFolderFile); 
     fileIOPermission.Demand(); 
    } catch (SecurityException se) { 
     Debug.WriteLine(se.ToString()); 
    } 
4

आप ऐसा लगता है कि आप एक फ़ाइल नाम निर्दिष्ट नहीं कर रहे हैं और इसलिए यह एक नहीं बना सकते कि उपयोग Security namesapce

var permissionSet = new PermissionSet(PermissionState.None);  
var writePermission = new FileIOPermission(FileIOPermissionAccess.Write, pathToFolder); 
permissionSet.AddPermission(writePermission); 

if (permissionSet.IsSubsetOf(AppDomain.CurrentDomain.PermissionSet)) 
{ 
    // do your stuff 
} 
else 
{ 
    // alternative stuff 
} 
2

के लिए जाँच करें और उस निर्देशिका की अनुमति प्राप्त करने/आपके लेखन फाइल की जरूरत है .. एक मौजूदा निर्देशिका के रूप में एक ही नाम के साथ फ़ाइल - तो करने के लिए अपना रास्ता बदलने का प्रयास करें:

C: \ Users \ ऐश \ दस्तावेज़ \ ConfigOutput \ Out.xml

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