c# - 无法使用 DirectorySecurity 工具删除文件夹权限(访问规则)

标签 c# security file-permissions

我知道有很多关于删除文件夹权限的帖子。

然而,我尝试的每一个似乎都保持用户组完好无损,并且没有抛出异常 - 规则已从 ACL 中删除,修改后的 AccessControl 已成功设置,但没有进行任何实际更改。

我需要直接清除文件夹的权限列表。我希望该文件夹之后为空。

示例:

这个:

properties

应该变成:

Cleared Properties

这是我目前正在尝试但没有成功的方法:

DirectorySecurity objSecObj = directory.GetAccessControl();
                AuthorizationRuleCollection acl = objSecObj.GetAccessRules(true, true,
                                            typeof(System.Security.Principal.NTAccount));
objSecObj.SetAccessRuleProtection(false,false);
// EDIT: The above line was the problem, first param should be true.


foreach (FileSystemAccessRule ace in acl)
{
      objSecObj.RemoveAccessRuleSpecific(ace);
}
directory.SetAccessControl(objSecObj);

目的是删除所有用户,然后手动添加特定的用户组。这部分不是问题,删除当前用户是我遇到麻烦的地方。

最佳答案

DirectorySecurity objSecObj = directory.GetAccessControl();
AuthorizationRuleCollection acl = objSecObj.GetAccessRules(true, true,
                                            typeof(System.Security.Principal.NTAccount));
objSecObj.SetAccessRuleProtection(true, false); //to remove inherited permissions
foreach (FileSystemAccessRule ace in acl) //to remove any other permission
{    
    objSecObj.PurgeAccessRules(ace.IdentityReference);  //same as use objSecObj.RemoveAccessRuleSpecific(ace);
}

directory.SetAccessControl(objSecObj);

关于c# - 无法使用 DirectorySecurity 工具删除文件夹权限(访问规则),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21334902/

相关文章:

java - 设置 catalina.policy 以允许 servlet 访问文件

php - 在php shell_execute中执行qpdf

c# - 调用Web Services时HTTP状态405 "Method Not Allowed"如何解决

c# - 从 StreamReader.ReadLine() 获取的字符串的编码是什么

node.js - 使用 Firebase 电子邮件/密码身份验证的 CSRF 保护

security - 在 Windows 2003 的文件属性中重现被阻止的 exe "unblock"选项

Android M权限被授予后被拒绝

windows - 为什么我不能使用 FILE_FLAG_BACKUP_SEMANTICS 打开 GENERIC_ALL 或 FILE_ALL_ACCESS 文件?

c# - 如何使用反 xss 攻击清理 web api 中的输入数据

c# - 空合并运算符的工作原理