क्यों पथ से वंचित है?


156

मुझे एक समस्या आ रही है जहाँ मैं अपनी फ़ाइल को हटाने की कोशिश कर रहा हूँ लेकिन मुझे इसका अपवाद नहीं मिल रहा है।

if (result == "Success")
{
     if (FileUpload.HasFile)
     {
         try
         {
              File.Delete(Request.PhysicalApplicationPath + app_settings.login_images + txtUploadStatus.Text);
              string filename = Path.GetFileName(btnFileUpload.FileName);
              btnFileUpload.SaveAs(Request.PhysicalApplicationPath + app_settings.login_images + filename);
         }
         catch (Exception ex)
         {
               Message(ex.ToString());
         }
      }
}

इसके अलावा, मुझे ध्यान देना चाहिए कि मैं जिस फ़ोल्डर को हटाने की कोशिश कर रहा हूं उसका नेटवर्क सेवाओं पर पूरा नियंत्रण है।

पूर्ण अपवाद संदेश है:

System.UnauthorizedAccessException: पथ 'C: \ Users \ gowdyn \ Documents \ Visual Studio 2008 \ Projects \ संकर \ संकर \ temp_loginimages \ enviromental.jpg' 'तक पहुँच से इनकार कर दिया गया है। System.IO .__ Error .inIOError (Int32 errorCode, String MightFullPath) System.IO.File.Delete (स्ट्रिंग पथ) पर संकर ।User_Controls.Imgloader.dd.Edit_Tbl.btnUpdate_Click (ऑब्जेक्ट प्रेषक, EventArgs) दस्तावेज़ \ Visual Studio 2008 \ Projects \ संकर \ संकर \ User_Controls \ Imgloader_Add_Edit_Tbl.ascx.cs: लाइन 242

कोई विचार?


4
अपवाद के बारे में क्या स्पष्ट नहीं है? जिस खाते के तहत आवेदन चल रहा है, उसमें फ़ाइल / फ़ोल्डर तक पहुँच विशेषाधिकार नहीं हैं।
Oded

8
मैं समझता हूं कि अपवाद क्या कह रहा है। समस्या यह है कि यह कार्यक्षमता कुछ उपयोगकर्ताओं द्वारा उपयोग की जाती है जिन्हें सिस्टम का उपयोग करके छवियों को संशोधित करने की आवश्यकता होती है। इसका एक हिस्सा पुरानी छवि को हटाकर और एक नई छवि को सहेजकर छवियों को प्रतिस्थापित कर रहा है।
निक गोदी

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

6
अपवाद जानकारीपूर्ण नहीं है। यह आपको नहीं बताता है: A. कौन सा प्रिंसिपल संसाधन बी तक पहुंचने की कोशिश कर रहा है। उसे किस अनुमति की आवश्यकता है। यह पता लगाने के लिए, यह विंडोज SysInternals स्थापित करने और पथ पहुंच की निगरानी करने की आवश्यकता है।
ATL_DEV

जवाबों:


184

File.Delete विधि के अनुसार ...

एक UnauthorizedAccessException4 बातें के माध्यम से एक:

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

77
पथ एक निर्देशिका है। मेरे लिए शर्मनाक: /
प्रति G

4
मेरे लिए कल का सामना करना पड़ा । मुझे इस अस्पष्ट अपवाद संदेशों से नफरत है :(
Broken_Window

1
मैं 6 घंटे से अधिक के लिए संघर्ष कर रहा था और आपकी प्रतिक्रिया को देखने के बाद देखा कि रास्ता निर्देशिका था ... धन्यवाद एक टन @CrazyTim ..
उपयोगकर्ता M

6
Path is a directory.इस टिप के लिए धन्यवाद :) इसने मेरी मदद की।
सिडॉन

8
ओह माय ... पाथ एक डायरेक्टरी है। धन्यवाद Microsoft यह बहुत अनधिकृत पहुँच है।
SeriousM

181

मुझे भी समस्या थी, इसलिए मैंने इस पद पर ठोकर खाई। मैंने कॉपी / डिलीट से पहले और बाद में कोड की निम्न पंक्ति जोड़ी।

हटाएं

File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);

प्रतिलिपि

File.Copy(file, dest, true);
File.SetAttributes(dest, FileAttributes.Normal);

17
मैंने सफलता के बिना फ़ोल्डर को 'सभी को' पूर्ण अनुमति दी। किसी तरह इन फ़ाइल विशेषताओं हालांकि काम किया। धन्यवाद। काश एमएस आखिरकार एक उचित सुरक्षा मॉडल पर बस जाता। यह पता लगाने की कोशिश करना कि हर कुछ वर्षों में कॉपी / डिलीट क्यों होता है, कम से कम कहने में निराशा होती है।
स्टीव

13
SetAttributes Normal मेरे लिए ट्रिक था - मैं File.Copy की कोशिश कर रहा था और एक रीड-ओनली फ़ाइल को ओवरराइट कर रहा था ..
टॉम हंटर

6
पथ तक पहुंच से वंचित है यह सुझाव नहीं है कि फ़ाइल केवल आसानी से पढ़ी जाती है (क्योंकि आपके पास वास्तव में पथ तक पहुंच है!) मेरी राय में त्रुटि संदेश को बदलना चाहिए। वैसे भी संकेत के लिए धन्यवाद!
एमबीरो

1
मैंने कार्यक्रम को प्रशासक के रूप में चलाया और मुद्दा चला गया।
सैंटियागो विल्लाफोर्टे

5
प्रतिलिपि कार्रवाई में मदद करने के बाद एक विशेषता सेट करना कैसे होता है? कॉपी स्टेटमेंट पर प्रोग्राम क्रैश पहले से ही नहीं होगा? क्या इसे हटाने के ऑपरेशन की तरह ही कॉपी ऑपरेशन से पहले होना चाहिए?
विभोर तनवर

31

यह एक पुराना मुद्दा है, लेकिन मैं खोज करते हुए इसमें भाग गया। पता चला है कि मैं SaveAs के लिए बचाओ पथ में वास्तविक फ़ाइल नाम घटक याद कर रहा था ...

string uploadPath = Server.MapPath("~/uploads");
file.SaveAs(uploadPath); // BAD
file.SaveAs(Path.Combine(uploadPath, file.FileName)); // GOOD

18

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

यहाँ IIS सुरक्षा के बारे में बहुत अच्छा वर्णन किया गया है

उम्मीद है की यह मदद करेगा


इस मदद के लिए धन्यवाद .. IIS_IUSRS उपयोगकर्ता के लिए अनुमति।
टॉम

13

Visual Studio पर राइट क्लिक करें और Run as Administrator पर क्लिक करें


यह एक विंडोज 8.1 एंटरप्राइज मशीन पर मेरे File.Move मुद्दे के लिए समाधान था, जिस पर मैं स्थानीय प्रशासक था, और फाइलों पर कुछ और नहीं था।
रॉबर्ट केर

13

मुझे त्रुटि मिली क्योंकि मुझे महसूस नहीं हुआ कि गंतव्य एक फ़ाइल होना चाहिए। मेरे पास दूसरे पैरामीटर के रूप में एक फ़ोल्डर था (जो कि cmd में काम करता है)। और मुझे मिल गया Unhandled Exception: System.UnauthorizedAccessException: Access to the path is denied.क्योंकि C # File.Moveवहां एक फ़ाइल चाहता है, न केवल पहले पैरामीटर के लिए, बल्कि दूसरी के लिए भी, और इसलिए यदि आप एक निर्देशिका को दूसरे पैरामीटर के रूप में रखते हैं, तो यह एक फाइल लिखने की कोशिश कर रहा है जैसे कि c:\crpजब आपके पास एक निर्देशिका होती है c:\crp

यह गलत होगा File.Move(args[0],"c:\\crp");

तो, यह सही होगा File.Move(args[0],"c:\\crp\\a.a");

उसके लिए भी यही File.Copy


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

7

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

या आप पुरानी शैली में जा सकते हैं और बस पहचान को नेटवर्क सेवा में सेट कर सकते हैं, और नेटवर्क सेवा उपयोगकर्ता को पथ तक पहुंचा सकते हैं।


3

आपको उस फ़ोल्डर के विशेषाधिकारों को संशोधित करने की आवश्यकता है जिसे आप / से बचाने के लिए हटाने की कोशिश कर रहे हैं। युक्त फ़ोल्डर पर राइट-क्लिक करें और आपके एप्लिकेशन के तहत चलने वाले उपयोगकर्ता के अधिकारों को संशोधित करने के लिए सुरक्षा टैब का उपयोग करें ।


आप मान रहे हैं कि वह अपनी मशीन का प्रशासक है .. यदि यह एक काम करने वाली मशीन है और वह सिर्फ एक उपयोगकर्ता है .. तो उन्होंने संभवत: इस तरह से अनुमतियों को एक कारण के लिए सेट कर दिया है .. क्योंकि हम केवल मानने के लिए रह गए हैं
मेथडमैन

1
यह एक काम करने वाली मशीन है और मैं एक पावर यूजर हूं। मैं व्यवस्थापक के रूप में लॉग इन नहीं करता। छवि फ़ोल्डर के गुणों को संशोधित किया गया है ताकि नेटवर्क सेवाओं की पूर्ण पहुंच हो। लेकिन इससे कोई फर्क नहीं पड़ा।
निक गोदी

1
मैंने फ़ोल्डर में पूरी पहुंच के साथ "सबको" जोड़ा, और "
वॉयला

3

जब I / O त्रुटि या एक विशेष प्रकार की सुरक्षा त्रुटि के कारण ऑपरेटिंग सिस्टम पहुंच से इनकार करता है, तो इसका अपवाद है।

मैंने उसी चीज को मारा। यह सुनिश्चित करने के लिए जाँच करें कि फ़ाइल छिपाई हुई तो नहीं है।


3

मुझे इस मुद्दे का भी सामना करना पड़ा जब मेरी खिड़की सेवा ने अपवाद फेंकना शुरू कर दिया

System.UnauthorizedAccessException: Access to the path "C:\\Order\\Media
44aa4857-3bac-4a18-a307-820450361662.mp4" is denied.

इसलिए एक समाधान के रूप में, मैंने अपनी सेवा से जुड़े उपयोगकर्ता खाते की जांच की, जैसा कि नीचे स्क्रीन कैप्चर में दिखाया गया है

यहाँ छवि विवरण दर्ज करें

तो मेरे मामले में यह नेटवर्क सेवा थी

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

अधिक जानकारी के लिए कृपया नीचे दिए गए स्क्रीन कैप्चर की जाँच करें

यहाँ छवि विवरण दर्ज करें


3

मेरे लिए भी यही समस्या है, मैं फ़ाइल के बजाय फ़ोल्डर को इंगित कर रहा था।

इसलिए पथ में सुनिश्चित करें, पथ + फ़ाइल नाम दें

System.IO.File.WriteAllBytes("path", bytearray);

2

अपनी फ़ाइलों के गुणों की जाँच करें। यदि केवल पढ़ने के लिए जाँच की है, तो इसे अनचेक करें। यह अनधिकृत असफलता के साथ मेरा व्यक्तिगत मुद्दा था।


2

मुझे यह त्रुटि मिली और मैंने इसे एक पल में हल कर दिया। न जाने क्यों मेरे सभी फ़ोल्डर केवल पढ़ने के लिए हैं my मैंने केवल-पढ़ने को रद्द कर दिया और इसे लागू किया। हालाँकि, यह अभी भी केवल पढ़ने के लिए है। इसलिए मैंने फ़ाइल को रूट फ़ोल्डर में स्थानांतरित कर दिया, यह काम करता है - इतना अजीब।


2

जब एक I / O त्रुटि या सुरक्षा त्रुटि के कारण ऑपरेटिंग सिस्टम पहुँच से इनकार करता है, तो एक अनधिकृत अपवाद अपवाद फेंका गया है।

यदि आप किसी फ़ाइल या रजिस्ट्री कुंजी तक पहुँचने का प्रयास कर रहे हैं, तो सुनिश्चित करें कि यह केवल पढ़ने के लिए नहीं है


2

यदि आप BitDefender का उपयोग कर रहे हैं तो एक अच्छा मौका है कि इसकी Safe Files सुविधा ने आपके ऑपरेशन को अवरुद्ध कर दिया है। यह रैंसमवेयर सुरक्षा का एक रूप है जो इसके कुछ और उन्नत संस्करणों के साथ आता है।

BitDefender में अपना एप्लिकेशन एक्सेस देना सुनिश्चित करें और पुनः प्रयास करें।

इस BitDefender सपोर्ट पेज में कुछ और जानकारियां मिल सकती हैं ।


1

एक साझा सर्वर पर एक नई स्थानांतरित वेबसाइट पर मुझे यही समस्या थी। वेब होस्ट पैनल (DotNetPanel) के माध्यम से हल करके "अनुमति लिखने की अनुमति दें" सही है। इसलिए यदि आप सर्वर कॉन्फ़िगरेशन पर एक नज़र डालने के लायक सभी कोड की समीक्षा करने से पहले एक साझा सर्वर में हैं और आपको बहुत समय बचा सकता है।


1

ध्यान रखें कि यदि आप अपने कोड से साझा फ़ोल्डर पथ तक पहुँचने का प्रयास कर रहे हैं, तो आपको न केवल सुरक्षा टैब के माध्यम से भौतिक फ़ोल्डर में उचित अनुमति देने की आवश्यकता है। आपको शेयर टैब के माध्यम से संबंधित ऐप पूल उपयोगकर्ता के साथ फ़ोल्डर को "साझा" करने की भी आवश्यकता है


1

मैं इस त्रुटि का सामना कर रहा था क्योंकि

कभी-कभी जब मैं पथ के साथ फ़ाइल नाम औरCombineFileName = ""

यह बन Path Directoryएक नहीं fileहै जो एक समस्या के रूप में है कि ऊपर उल्लेख किया

तो आप FileNameइस तरह की जाँच करें

if(itemUri!="")
        File.Delete(Path.Combine(RemoteDirectoryPath, itemUri));

1

फ़ाइल डिलीट करते समय मेरे पास सटीक त्रुटि थी। यह एक Windows सेवा थी जो एक सेवा खाते के तहत चल रही थी, जो कि फ़ोल्डर के पूर्ण नियंत्रण के बावजूद एक साझा फ़ोल्डर से .pdf दस्तावेज़ को हटाने में असमर्थ थी।

मेरे लिए जो काम किया गया वह साझा किए गए फ़ोल्डर> उन्नत> शेयर> ऐड के सुरक्षा टैब पर नेविगेट कर रहा था।

मैंने तब सेवा समूह को व्यवस्थापकों के समूह में जोड़ा, परिवर्तनों को लागू किया और सेवा खाता तब उस फ़ोल्डर के भीतर सभी फाइलों पर सभी संचालन करने में सक्षम था।


1

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

  • आपका इंस्टॉल स्थान
  • आपका AppData स्थान
  • फ़ाइल या फ़ोल्डर पिकर के माध्यम से चयनित फ़ाइलें
  • आपके ऐप मेनिफेस्ट में अनुरोध किए गए स्थान

आप अधिक जानकारी के लिए यहां पढ़ सकते हैं => https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions


1

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

यहाँ छवि विवरण दर्ज करें

यदि यह आपको एक सूचना देता है, तो आप इसे वहां से संभाल सकते हैं। मेरे मामले में इसने एक अधिसूचना नहीं दी जिसे मैंने देखा था। तो यहां बताया गया है कि नॉर्टन को प्रोग्राम को ब्लॉक करने से कैसे रोका जाए।

  1. नॉर्टन खोलें
  2. डाउन एरो पर क्लिक करें
  3. इतिहास पर क्लिक करें
  4. कार्यक्रम द्वारा गतिविधि का पता लगाएं
  5. अधिक विकल्प पर क्लिक करें
  6. बहिष्करण प्रक्रिया पर क्लिक करें

0

सर्वर पर तैनाती के बाद ऐसा करने की कोशिश करते समय मुझे भी उसी समस्या का सामना करना पड़ा:

dirPath = Server.MapPath(".") + "\\website\\" + strUserName;
if (!Directory.Exists(dirPath))
{
    DirectoryInfo DI = Directory.CreateDirectory(dirPath);
}
string filePath = Server.MapPath(".") + "\\Website\\default.aspx";
File.Copy(filePath, dirPath + "\\default.aspx", true);
File.SetAttributes(dirPath + "\\default.aspx", FileAttributes.Normal);

मैंने IIS में व्यवस्थापक सहित अन्य समूह को अनुमति दी और मेरी समस्या हल हो गई।


0

मैंने पाया है कि यह त्रुटि डिजाइन मोड में विरोध के रूप में हो सकती है? निष्पादन मोड ... यदि आप कुछ ऐसा कर रहे हैं जैसे कि एक वर्ग सदस्य बनाना जो एक .INI या .HTM फ़ाइल (कॉन्फ़िगरेशन फ़ाइल, मदद फ़ाइल) तक पहुँच की आवश्यकता है, तो आप घोषणा में आइटम को इनिशियलाइज़ नहीं करना चाहते, लेकिन बाद में इसे आरंभ कर सकते हैं। FORM_Load () आदि में ... जब आप इनिशियलाइज़ करते हैं ... एक गार्ड का उपयोग करें IF स्टेटमेंट:

    /// <summary>FORM: BasicApp - Load</summary>
    private void BasicApp_Load(object sender, EventArgs e)
    {
        // Setup Main Form Caption with App Name and Config Control Info
        if (!DesignMode)
        {
            m_Globals = new Globals();
            Text = TGG.GetApplicationConfigInfo();
        }
    }

यह MSVS डिज़ाइनर को जब आप डिज़ाइन मोड में हैं, INI या HTM फ़ाइल बनाने की कोशिश करने से रोकेंगे।


0

मुझे यह त्रुटि तब हुई जब मैंने एक फ़ोल्डर का नाम बदलने की कोशिश की बहुत तेजी से उसके बाद या तो स्थानांतरित कर दिया गया था या बनाया गया था।

एक साधारण System.Threading.Thread.Sleep(500);ने इसे हल किया:

void RenameFile(string from, string to)
{
   try
   {   
      System.IO.File.Move(from, to)      
   }   
   catch 
   {  
       System.Threading.Thread.Sleep(500);      
       RenameFile(from, to);      
   }   
}

यह सोचें कि अगर आपने फोल्डर को आधा सेकंड के लिए सोने से पहले ले जाने से पहले अस्तित्व में लिया है, तो यह बेहतर होगा ... अगर ओएस व्यस्त है तो पिछली चाल में आधे से अधिक समय लग सकता है, और आपकी पीठ उसी मुद्दे पर।
पॉल ज़हरा

कोड का यह टुकड़ा बहुत खतरनाक है। यह RenameFile पद्धति को दोहराता है, चाहे वह कोई भी अपवाद क्यों न हो! यदि अपवाद का कारण वास्तविक अनुमति समस्या है तो यह एप्लिकेशन को क्रैश कर सकता है
होसैन शाहदोस्त

0

अपने विशेष मामले में मैं बार-बार 10000 फ़ोल्डर्स बना रहा था और हटा रहा था। मुझे ऐसा लगता है कि यह समस्या थी, हालांकि यह विधि Directory.Delete(path, true)वापस आ गई, फिर भी ओएस के अंडरलाइनिंग तंत्र डिस्क से फ़ाइलों को हटा सकते हैं। और जब मैं पुराने को हटाने के तुरंत बाद नए फ़ोल्डर बनाना शुरू कर रहा हूं, तो उनमें से कुछ अभी भी बंद हैं क्योंकि वे अभी तक पूरी तरह से हटाए नहीं गए हैं। और मुझे System.UnauthorizedAccessException मिल रही है: "पथ पर प्रवेश निषेध है"।

यहाँ छवि विवरण दर्ज करें

उस समस्या को हल करने के Thread.Sleep(5000)बाद उपयोग करना Directory.Delete(path, true)। मैं बिल्कुल सहमत हूं कि यह सुरक्षित नहीं है, और मैं किसी को भी इसका इस्तेमाल करने के लिए प्रोत्साहित नहीं कर रहा हूं। मैं अपने उत्तर को बेहतर बनाने के लिए इस समस्या को हल करने के लिए एक बेहतर दृष्टिकोण रखना चाहूंगा। अब मैं सिर्फ एक विचार दे रहा हूं कि यह अपवाद क्यों हो सकता है।

class Program
{
    private static int numFolders = 10000;
    private static string rootDirectory = "C:\\1";

    static void Main(string[] args)
    {
        if (Directory.Exists(rootDirectory))
        {
            Directory.Delete(rootDirectory, true);
            Thread.Sleep(5000);
        }

        Stopwatch sw = Stopwatch.StartNew();
        CreateFolder();
        long time = sw.ElapsedMilliseconds;

        Console.WriteLine(time);
        Console.ReadLine();
    }

    private static void CreateFolder()
    {
        var one = Directory.CreateDirectory(rootDirectory);

        for (int i = 1; i <= numFolders; i++)
        {
            one.CreateSubdirectory(i.ToString());
        }
    }
}

0

यदि पथ पत्र के बाद कॉलन (:) वर्ण अनुपलब्ध है या नहीं, तो पहले पथ की जांच करें। यदि कोलन गायब नहीं है, तो आप जांच कर सकते हैं कि उस रास्ते के लिए एक्सेस / राइट की अनुमति दी गई है या नहीं। मेरे पास एक ही मुद्दा था और मैं केवल बृहदान्त्र, अनुमति और बाकी सब को याद कर रहा था।

C:\folderpath

ठीक काम करेगा लेकिन,

C\folderpath .........(missing colon)

आपको अस्वीकृत त्रुटि तक पहुँच देगा।


0

मैं System.IO.File.OpenWrite (पथ) का उपयोग करने की कोशिश कर रहा था

और यह काम नहीं किया क्योंकि मैं केवल OpenWrite () एक निर्देशिका के लिए एक मार्ग से गुजर रहा था, लेकिन इसके लिए आपको जिस फ़ाइल को लिखना है, उसके लिए एक पथ की आवश्यकता है। तो अनधिकृत असफलता से बचने के लिए फ़ाइल का नाम सहित एक पूरा रास्ता। अंत में OpenWrite में पारित करने की आवश्यकता है।


0

मैं भी इसी मुद्दे से निपटने के रूप में इस पोस्ट में भाग गया। ऐसा लगता है कि फ़ाइल उपयोग में है और इसलिए इसे लिखने में सक्षम नहीं है। हालांकि यह पता लगाने में सक्षम नहीं है कि कौन सी प्रक्रिया इसका उपयोग कर रही है। उस बॉक्स में लॉग इन किया गया कोई अन्य उपयोगकर्ता साइन आउट नहीं किया है, न ही इसे पकड़े हुए किसी भी उपयोगकर्ता को देखें। कैसे पता लगाने के बारे में कोई त्वरित सुझाव।

धन्यवाद, लक्षय (डेवलपर)


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

0

इस समस्या को हल करने के लिए, मैं डीबगिंग सिस्टम में स्कॉट हैन्समैन के दृष्टिकोण का पालन करता हूं। UututhorizedAccessException (अक्सर इसके बाद: पथ तक पहुंच अस्वीकृत है) लेख, उदाहरण के साथ कोड bellow है:

class Program
{
    static void Main(string[] args)
    {
        var path = "c:\\temp\\notfound.txt";
        try
        {
            File.Delete(path);
        }
        catch (UnauthorizedAccessException)
        {
            FileAttributes attributes = File.GetAttributes(path);
            if ((attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
            {
                attributes &= ~FileAttributes.ReadOnly;
                File.SetAttributes(path, attributes);
                File.Delete(path);
            }
            else
            {
                throw;
            }
        }
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.