2012-04-29 15 views
7

इसलिए मैंने कई बार जवाब की तलाश की है, और बिना किसी लाभ के अनुमति के सामान के साथ दिक्कत की है, लेकिन यह कोड अभी भी मुझे एक निर्दिष्ट पथ पर फ़ाइल डाउनलोड करने नहीं देगा।फ़ाइल तक पहुंचने में असमर्थ - WebClient.DownloadFile

WebClient client = new WebClient(); 
client.DownLoadFile("http://dl.dropbox.com/u/(My account)/Installer.jar", @"c:\Games\Name\libs"); 
client.DownLoadFile("http://dl.dropbox.com/u/(My account)/Name.zip", @"c:\Games\Name"); 

हमेशा मुझे देता है: "पथ तक पहुंच 'c: \ Games \ Name \ libs' अस्वीकार कर दिया गया है।"

विंडोज XP SP3 का उपयोग करके भी ध्यान दें।

+0

Plese अपने शीर्षक को "सी # -" और इस तरह से उपसर्ग नहीं करते हैं। टैग के लिए यही है। –

उत्तर

2

ऐप में शायद उस फ़ोल्डर को लिखने की अनुमति नहीं है। यदि यह क्लाइंट ऐप है, तो इसे व्यवस्थापक के रूप में चलाने का प्रयास करें। अन्यथा, सभी के लिए पूर्ण नियंत्रण में 'c: \ Games \ name \ libs' पर अनुमतियां बदलें।

+0

सही, मुझे नहीं पता कि अनुमति या कुछ भी मुझे संकेत देने के लिए कैसे करें, मुझे लगता है। इसके अलावा मैं अपने कंप्यूटर पर व्यवस्थापक हूं, इसलिए यह अजीब है। इसके अतिरिक्त। मैं फ़ोल्डर पर "केवल पढ़ने के लिए" विशेषता को अक्षम करने में सक्षम नहीं प्रतीत होता .. ओ_ओ – Fishrock123

+0

फ़ोल्डर पर राइट क्लिक करें और गुण क्लिक करें। सुरक्षा टैब की तलाश करें। – tzerb

+0

विन XP SP3 में वह टैब नहीं है ... और मैं नहीं चाहता कि लोग मेरे प्रोग्राम का उपयोग करके गुणों के माध्यम से ऐसा कर सकें। > _ < – Fishrock123

1

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

यदि यह काम नहीं करता है, तो C:\Games\Name\libs फ़ोल्डर पर नेविगेट करें, राइट क्लिक करें और गुणों पर जाएं। "सुरक्षा" टैब चुनें, शीर्ष सूची में उन उपयोगकर्ताओं के समूह का चयन करें जो आपके प्रोग्राम को चलाएंगे। (Users (YourName-PC\Users) का उपयोग करने का प्रयास करें)। इसके साथ चयनित, सूची के नीचे संपादित करें पर क्लिक करें, और नीचे सूची के तहत Full control का चयन करें।

0

अगर आप फ़ोल्डर पर लिखने की अनुमति को देखने के लिए, यदि डाउनलोड करने

public static bool HaveWritePermissionsForFolder(string path) 
    { 
     var rules = Directory.GetAccessControl(Path.GetDirectoryName(Path.GetDirectoryName(path))).GetAccessRules(true, true, typeof(SecurityIdentifier)); 

     bool allowwrite = false; 
     bool denywrite = false; 
     foreach (FileSystemAccessRule rule in rules) 
     { 
      if (rule.AccessControlType == AccessControlType.Deny && 
       (rule.FileSystemRights & FileSystemRights.WriteData) == FileSystemRights.WriteData && 
       (groups.Contains(rule.IdentityReference) || rule.IdentityReference.Value == sidCurrentUser) 
       ) 
      { 
       denywrite = true; 
      } 
      if (rule.AccessControlType == AccessControlType.Allow && 
       (rule.FileSystemRights & FileSystemRights.WriteData) == FileSystemRights.WriteData && 
       (groups.Contains(rule.IdentityReference) || rule.IdentityReference.Value == sidCurrentUser) 
       ) 
      { 
       allowwrite = true; 
      } 
     } 


     if (allowwrite && !denywrite) 
      return true; 

     return false; 
    } 
+0

ठीक है, तो मुझे पहुंच सेट करने की आवश्यकता है। मुझे पता है कि। लेकिन मैं यह नहीं समझ सकता कि कैसे। – Fishrock123

+0

ने इस http://msdn.microsoft.com/en-us/library/system.io.directory.setaccesscontrol.aspx को आजमाया? –

+0

मैंने फ़ाइल की बजाय निर्देशिका सुरक्षा की कोशिश नहीं की है, अनुमान लगाओ कि मैं करूँगा। लेकिन मुझे वैसे भी @ "MYDOMAIN \ MyAccount" के लिए क्या रखा जाना चाहिए? – Fishrock123

11

हाय मैं ऊपर कोड स्थानीय स्तर पर करने की कोशिश की पहले setaccesscontrol का उपयोग कर में नाकाम रहने के नियम सेट करते हैं और एक ही त्रुटि "प्रवेश मिल गया नीचे कोड का उपयोग कर सकते से इनकार किया है ":

WebClient myWebClient = new WebClient(); 
    myWebClient.DownloadFile("http://localhost:1929/2.png", @"C:\Z\) 

निर्देशिका के अंत में फ़ाइल नाम निर्दिष्ट करने का प्रयास, स्थानीय स्तर पर कोई समस्या नहीं की बचत होती है जब मैं यह भागा:

WebClient myWebClient = new WebClient(); 
    myWebClient.DownloadFile("http://localhost:1929/2.png", @"C:\Z\FILENAME.jpg") 
+0

जैसा कि कहा गया है, यह फ़ाइल विस्तार जोड़ने के बाद काम किया –

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