Как сбросить права доступа к папке в .NET?

У меня есть программа, которой нужно изменить разрешения для указанной папки. Что я должен сделать в первую очередь, так это удалить все разрешения, которые были предоставлены папке по наследству (т.е. удалить все текущие разрешения), и добавить новые разрешения для определенных пользователей / групп.

Я знаю, что могу легко удалить разрешение для папки для определенного пользователя, когда я знаю этого пользователя, но есть ли способ стереть все разрешения, чтобы я мог начать все заново, или мне нужно найти способ найти все существующие разрешения и потом удалить их по одному?

Что мне нужно сделать более конкретно, так это создать новую папку БЕЗ унаследованных разрешений и установить свои собственные.

Чтобы быть более конкретным, я хотел бы сделать так, как если бы я создал каталог, затем перешел в безопасность, продвинулся и удалил наследование.


person David Brunelle    schedule 24.09.2012    source источник


Ответы (4)


Не уверен, что вы сделаете все, что вам нужно, но это инструмент .NET.

Directory.GetAccessControl

Directory.SetAccessControl

person paparazzo    schedule 24.09.2012

Не совсем в .NET, но вы можете использовать программу ICACLS с Process.Start() следующим образом:

Process.Start("icacls MyDir /inheritance:r");
person Rafael    schedule 24.09.2012
comment
Я не знаю, могу ли я использовать команду DOS в этой программе. Нет способа сделать это с помощью кода? - person David Brunelle; 24.09.2012

Итак, я провел несколько тестов, и мне нужно было назвать метод SetAccessRuleProtection из DirectorySecurity и применить его к моему DirectoryInfo.

Я попробовал, и это сработало.

person David Brunelle    schedule 03.10.2012

Я создал программу, которая делает то же самое

Private Sub AddPermisssion(ByVal directories As String)
    Dim AccountingPermFolder As String = directories
    Dim AccountingDI As IO.DirectoryInfo = New IO.DirectoryInfo(AccountingPermFolder) 
    Dim AccountingDS As DirectorySecurity = AccountingDI.GetAccessControl
    AccountingDS.SetAccessRuleProtection(True, False) //True Protect file and False remove Inheritance   
    IO.Directory.SetAccessControl(AccountingPermFolder, AccountingDS)

    AccountingDS.AddAccessRule(New FileSystemAccessRule(Admins, FileSystemRights.FullControl, AccessControlType.Allow))
    AccountingDS.AddAccessRule(New FileSystemAccessRule(AccountGroup, FileSystemRights.FullControl, AccessControlType.Allow))
    AccountingDS.AddAccessRule(New FileSystemAccessRule(SystemAdmin, FileSystemRights.FullControl, AccessControlType.Allow))
    AccountingDI.SetAccessControl(AccountingDS)


End Sub
person Jose Ortiz    schedule 24.05.2019