如何在.NET中重置文件夹权限?

时间:2012-09-24 19:06:31

标签: .net folder-permissions

我有一个程序需要更改指定文件夹的权限。我必须首先做的是删除通过继承给予该文件夹的任何权限(即删除所有执行权限)并为特定用户/组添加新权限。

我知道当我知道该用户时,我可以轻松删除特定用户的文件夹权限,但有没有办法擦除所有权限以便我可以重新开始,或者我是否需要找到一种方法来查找所有用户现有权限,然后逐个删除它们?

我需要做的更具体的是创建一个没有继承权限的新文件夹并设置我自己的权限。

更具体地说,我想做的就好像我创建了目录然后我进入了安全性,高级并删除了继承。

4 个答案:

答案 0 :(得分:1)

不确定是否会执行您需要的所有操作,但这些是.NET工具

Directory.GetAccessControl

Directory.SetAccessControl

答案 1 :(得分:0)

严格来说不是.NET,但您可以ICACLS使用Process.Start()这样的程序:

Process.Start("icacls MyDir /inheritance:r");

答案 2 :(得分:0)

所以我一直在做一些测试,我需要做的是从DirectorySecurity调用SetAccessRuleProtection方法并将其应用到我的DirectoryInfo。

我尝试了它并且有效。

答案 3 :(得分:0)

我创建了一个执行相同操作的程序

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