我有一个程序需要更改指定文件夹的权限。我必须首先做的是删除通过继承授予文件夹的任何权限(即删除所有实际权限)并为特定用户/组添加新权限。
我知道当我知道特定用户时,我可以轻松删除该用户的文件夹权限,但是有没有办法擦除所有权限以便我可以重新开始,或者我需要找到一种方法来查找所有现有权限和然后一一删除?
我需要做的更具体地说是创建一个没有继承权限的新文件夹并设置我自己的。
更具体地说,我想做的就像我创建了目录然后进入安全性,高级并删除了继承。
我有一个程序需要更改指定文件夹的权限。我必须首先做的是删除通过继承授予文件夹的任何权限(即删除所有实际权限)并为特定用户/组添加新权限。
我知道当我知道特定用户时,我可以轻松删除该用户的文件夹权限,但是有没有办法擦除所有权限以便我可以重新开始,或者我需要找到一种方法来查找所有现有权限和然后一一删除?
我需要做的更具体地说是创建一个没有继承权限的新文件夹并设置我自己的。
更具体地说,我想做的就像我创建了目录然后进入安全性,高级并删除了继承。
不严格在 .NET 中,但您可以像这样使用该ICACLS
程序Process.Start()
:
Process.Start("icacls MyDir /inheritance:r");
所以我一直在做一些测试,我需要做的是从 DirectorySecurity 调用 SetAccessRuleProtection 方法并将其应用于我的 DirectoryInfo。
我试过了,它奏效了。
我创建了一个做同样事情的程序
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