我在远程服务器上有一个widows文件夹,我希望从该文件夹中删除特定用户的权限。我尝试了许多方法,但似乎没有任何效果。
以下代码没有任何错误,但权限保持不变。我使用的对象不正确吗?任何帮助将不胜感激。
dirName作为共享传递,例如\myserver\myfolder
private void removePermissions(string dirName, string username)
{
string user = System.Environment.UserDomainName + "\\" + username;
DirectoryInfo dirinfo = new DirectoryInfo(dirName);
DirectorySecurity dsec = dirinfo.GetAccessControl(AccessControlSections.All);
AuthorizationRuleCollection rules = dsec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
foreach (AccessRule rule in rules)
{
if (rule.IdentityReference.Value == user)
{
bool value;
dsec.PurgeAccessRules(rule.IdentityReference);
dsec.ModifyAccessRule(AccessControlModification.RemoveAll, rule, out value);
MessageBox.Show("Removed permission from " + dirName + " for " + user);
}
}
}
最佳答案
创建新的ACL后,您需要将其应用到该文件夹。
添加
dirinfo.SetAccessControl(dsec);
循环后。