2010-05-09 31 views
8

Tôi đang sử dụng mã đơn giản sau đây để thêm toàn quyền kiểm soát vào một thư mục, nhưng nó không hoạt động.Làm cách nào để đặt toàn quyền kiểm soát vào một thư mục?

 String dir_name = @"folder_full_path"; 
     DirectorySecurity dir_security = Directory.GetAccessControl(dir_name); 
     FileSystemAccessRule access_rule = new FileSystemAccessRule(@"AccountName", 
      FileSystemRights.FullControl, AccessControlType.Allow); 
     dSecurity.AddAccessRule(access_rule); 
     Directory.SetAccessControl(dir_name, dir_security); 

Nhưng mã này chỉ đặt quyền đặc biệt đến thư mục đích. Mã này gần như giống như MSDN sample. Tôi gãi đầu cho một lời giải thích hợp lý ... Hy vọng ai đó có thể làm sáng tỏ tôi.

Rất cám ơn.

+4

gì nếu bạn sử dụng các nhà xây dựng 5 thông số cho FileSystemAccessRule thay thế? http://msdn.microsoft.com/en-us/library/sfe70whw.aspx –

+3

Cảm ơn Ben. Tôi có thể làm cho nó được thực hiện với constructor 5 tham số bây giờ. Nhưng tôi không biết tại sao constructor 3 tham số tồn tại nếu nó không hoạt động? – smwikipedia

Trả lời

-3

:) Quay lại.

  • Tạo một thư mục.

  • Gán quyền.

  • đọc DirectorySecurity ACL và kiểm tra trong debugger nó trông như thế;)

Voila.

13

Sau khi một số kỹ thuật ngược lại các quy tắc ACL ban đầu tôi đã nhận nó để làm việc với đoạn mã sau:

IdentityReference everybodyIdentity = new SecurityIdentifier(WellKnownSidType.WorldSid, null); 

FileSystemAccessRule rule = new FileSystemAccessRule(
    everybodyIdentity, 
    FileSystemRights.FullControl, 
    InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, 
    PropagationFlags.None, 
    AccessControlType.Allow); 

May nó giúp mọi người truy cập hơn nữa :)

+0

Cảm ơn, tôi tin rằng đây là phiên bản 5 thông số. – smwikipedia

+0

Hoạt động hoàn hảo, cảm ơn! – Despertar

+1

+1 cho loại WellKnownSidType. Tôi cần tài khoản Quản trị viên trong chương trình của mình. – 010110110101

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