2010-05-09 10 views
8

Używam następującego prostego kodu, aby dodać pełną kontrolę do katalogu, ale to nie działa.Jak ustawić pełną kontrolę do katalogu?

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

Ale ten kod ustawiony tylko specjalnych uprawnień do folderu docelowego. Ten kod jest prawie taki sam jak MSDN sample. Drapię się za rozsądne wyjaśnienie ... Mam nadzieję, że ktoś może rzucić trochę światła na mnie.

Wielkie dzięki.

+4

Co jeśli użyto parametru konstruktora 5 zamiast tego dla FileSystemAccessRule? http://msdn.microsoft.com/en-us/library/sfe70whw.aspx –

+3

Dzięki Ben. Mogłem to teraz zrobić za pomocą konstruktora 5-parametrowego. Ale nie wiem, dlaczego konstruktor 3-parametrowy istnieje, jeśli on po prostu NIE DZIAŁA? – smwikipedia

Odpowiedz

-3

:) Odwróć się.

  • Utwórz katalog.

  • Przypisywanie uprawnień.

  • Czytaj DirectorySecurity ACL i sprawdzić w debugger, jak to wygląda;)

Voila.

13

Po niektóre reverse engineering oryginalnych reguł ACL mam go do pracy z następującego kodu:

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

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

Maj pomaga dalszych gościa :)

+0

Dzięki, uważam, że jest to wersja 5-parametrowa. – smwikipedia

+0

Działa idealnie, dzięki! – Despertar

+1

+1 dla WellKnownSidType. Potrzebuję konta administratora w moim programie. – 010110110101

Powiązane problemy