2012-05-18 56 views
8

Tôi biết có rất nhiều nội dung về vấn đề này và đã thử một vài điều nhưng không có may mắn trong việc sửa chữa nó.Truy cập vào đường dẫn **** bị từ chối

Tôi có một chương trình C# đã xây dựng một Tài liệu XML và cố gắng lưu nó vào một thư mục có trong MyDocuments. Tôi nhận được ngoại lệ folliwing khi gọi hàm XMLDoc.Save.

truy cập vào đường dẫn 'C: \ Users \ Ash \ Documents \ ConfigOutput' bị từ chối

Tôi có visual studio chạy as administrator. Bất kỳ suy nghĩ về cách sửa chữa nó?

Tôi đã thử lưu vào màn hình và vào thư mục C: \.

Tôi đang sử dụng cửa sổ 7.

Chạy tệp thi hành được xây dựng cũng dường như không hoạt động.

Xin lỗi, có vẻ như tôi đã ngu ngốc. Tôi đã thực sự không thêm một tên tập tin vào đường dẫn đầu ra. Tôi sẽ không xóa câu hỏi trong trường hợp bất kỳ ai khác được thực hiện bởi công cụ này! Cảm ơn tất cả sự giúp đỡ/bình luận.

+0

các bạn đã thử lưu nó vào thư mục gốc của C này hay cách khác thư mục? Nó có thể là một vấn đề với UAC và quyền trên thư mục người dùng - là điều này trên Win7 hay Vista? – Charleh

+0

Thử chạy ứng dụng dưới dạng quản trị viên thay vì studio trực quan. –

+1

bạn chỉ định tên tệp nào? – Richard

Trả lời

9

Có một vài khả năng:

  • ConfigOutput là một thư mục
  • ConfigOutput là một tập tin đó là đang sử dụng (đã mở)
  • Bạn chưa đăng nhập với tư cách người dùng 'Ash'

Bạn thường không phải chạy với tư cách Quản trị viên để ghi vào thư mục Tài liệu của riêng bạn.

+5

Đầu ra cấu hình là một thư mục ..... ooops! – user589195

+1

Trong trường hợp của tôi, tệp chỉ đọc. – toddmo

1

Thử chạy ứng dụng của bạn với tư cách quản trị viên.

Nếu bạn muốn gỡ lỗi ứng dụng của mình, hãy khởi động Visual Studio với tư cách là quản trị viên.

Buộc bắt đầu ứng dụng as administrator hãy xem chủ đề này: How do I force my .NET application to run as administrator?

T.B. Kiểm tra xem tệp của bạn chưa được tệp FileStream khác mở hay v.v.

1

Tôi không biết điều này có khác biệt không, nhưng bạn có thể chỉ định thư mục theo cách tương đối chứ không phải tuyệt đối: Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) sẽ cung cấp cho bạn đường dẫn của tài liệu người dùng hiện tại. Kiểm tra xem nó có khác với cái bạn cung cấp hay không.

Nếu có, bạn có thể cần chạy ứng dụng dưới một người dùng hoặc quản trị viên khác như những người khác đã chỉ ra. Rõ ràng một người dùng không được phép chỉ lưu các tệp vào thư mục tài liệu của người dùng khác.

Đối với tôi khi tôi gỡ lỗi ứng dụng của mình khỏi Visual Studio, thư mục tài liệu giống với người dùng tôi hiện đang đăng nhập và chạy Visual Studio dưới.

Bạn có thể thử <requestedExecutionLevel level="asInvoker" uiAccess="true|false"/> trước tiên và dần dần di chuyển đến highestAvailablerequireAdministrator.

Ngoài ra, đòi hỏi các điều khoản, nắm bắt những ngoại lệ và in nó ra:

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

Bạn cần phải kiểm tra và nhận được sự cho phép vào thư mục đó/tập tin văn bản của bạn .. cho rằng sử dụng 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

Dường như bạn không chỉ định một tên tập tin và do đó nó không thể tạo ra một nộp với tên giống như một thư mục hiện có - vì vậy hãy thử thay đổi con đường của bạn để:

C: \ Users \ Ash \ Documents \ ConfigOutput \ Out.xml

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