2012-04-29 39 views
7

Vì vậy, tôi đã tìm câu trả lời nhiều lần, và can thiệp xung quanh với các công cụ cho phép không có kết quả, nhưng mã này vẫn không cho phép tôi tải tệp xuống một đường dẫn được chỉ định.Không thể truy cập tập tin - 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"); 

Luôn mang đến cho tôi: "Quyền truy cập vào đường dẫn 'c: \ Games \ Name \ libs' bị từ chối".

Cũng lưu ý, sử dụng Windows XP SP3.

+0

Plese không đặt tiền tố cho tiêu đề của bạn bằng "C# -" và như vậy. Đó là những gì các thẻ cho. –

Trả lời

2

Ứng dụng có thể không có quyền ghi vào thư mục đó. Nếu đây là ứng dụng khách, hãy thử chạy nó với tư cách quản trị viên. Nếu không, hãy thay đổi quyền trên 'c: \ Games \ Name \ libs' thành toàn quyền kiểm soát đối với mọi người.

+0

Đúng, tôi chỉ không biết làm thế nào để làm cho nó nhanh chóng cho phép hoặc bất cứ điều gì, tôi đoán. Ngoài ra tôi là quản trị viên trên máy tính của tôi, vì vậy điều đó thật kỳ lạ. Ngoài ra. Tôi dường như không thể tắt thuộc tính "chỉ đọc" trên các thư mục .. O_o – Fishrock123

+0

Nhấp chuột phải vào thư mục và nhấp vào thuộc tính. Tìm tab bảo mật. – tzerb

+0

Win XP SP3 không có tab đó ... Và tôi không muốn những người sử dụng chương trình của tôi phải làm điều đó thông qua các thuộc tính. > _ < – Fishrock123

1

Nếu quyền truy cập vào đó bị từ chối, hãy thử chạy với tư cách quản trị viên.

Nếu không hoạt động, hãy điều hướng đến thư mục C:\Games\Name\libs, nhấp chuột phải vào thư mục và chuyển đến Thuộc tính. Chọn tab "Bảo mật", chọn ở đầu danh sách nhóm người dùng sẽ chạy chương trình của bạn. (Hãy thử sử dụng Users (YourName-PC\Users)). Khi được chọn, hãy nhấp vào Chỉnh sửa ở cuối danh sách và ở danh sách dưới cùng, chọn Full control theo Allow.

0

bạn có thể sử dụng mã dưới đây để xem bạn có quyền ghi vào thư mục, nếu không thiết lập các quy tắc không sử dụng setaccesscontrol trước khi tải

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

Ok, vì vậy tôi cần đặt quyền truy cập. Tôi biết điều đó. Nhưng tôi không thể hiểu được làm thế nào. – Fishrock123

+0

đã thử http://msdn.microsoft.com/en-us/library/system.io.directory.setaccesscontrol.aspx này? –

+0

Tôi chưa thử bảo mật thư mục thay vì tệp, tôi đoán là vậy. Nhưng những gì tôi phải đặt cho @ "MYDOMAIN \ MyAccount" anyways? – Fishrock123

11

Hi Tôi đã thử các mã trên tại địa phương và có những lỗi tương tự "Truy cập bị từ chối ":

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

cố gắng xác định tên tập tin ở phần cuối của thư mục, tiết kiệm tại địa phương không có vấn đề khi tôi chạy nó:

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

Như đã nói, nó hoạt động, sau khi thêm phần mở rộng tệp –

Các vấn đề liên quan