2010-05-09 7 views
8

Я использую следующий простой код, чтобы добавить полный контроль в каталог, но он не работает.Как установить полный контроль над каталогом?

 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); 

Но этот код только установить специальных разрешений в целевую папку. Этот код почти такой же, как у MSDN sample. Я почесываю голову за разумное объяснение ... Надеюсь, кто-то может пролить свет на меня.

Большое спасибо.

+4

Что делать, если вы использовали конструктор 5-параметрический вместо FileSystemAccessRule? http://msdn.microsoft.com/en-us/library/sfe70whw.aspx –

+3

Спасибо, Бен. Я мог бы сделать это с помощью 5-параметрического конструктора. Но я не знаю, почему существует конструктор с тремя параметрами, если он просто НЕ РАБОТАЕТ? – smwikipedia

ответ

-3

:) Повернитесь.

  • Сделать каталог.

  • Назначение разрешений.

  • Read DirectorySecurity ACL и проверить в отладчике, как она выглядит;)

вуаля.

13

После некоторого обратного проектирования исходных правил ACL я получил его на работу со следующим кодом:

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

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

мая он помогает любому посетителю дальнейшего :)

+0

Спасибо, я считаю, что это 5-параметрическая версия. – smwikipedia

+0

Работает отлично, спасибо! – Despertar

+1

+1 для WellKnownSidType. Мне нужна учетная запись администратора в моей программе. – 010110110101

Смежные вопросы