Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从windows文件夹中删除权限_C#_Windows_Permissions - Fatal编程技术网

C# 从windows文件夹中删除权限

C# 从windows文件夹中删除权限,c#,windows,permissions,C#,Windows,Permissions,我在远程服务器上有一个widows文件夹,希望从中删除特定用户的权限。我尝试了很多方法,但似乎都不管用 以下代码没有错误,但权限保持不变。我是否没有使用正确的对象,或者缺少使用这些对象的步骤?如蒙协助,将不胜感激 目录名作为共享传递,例如。\myserver\myfolder private void removePermissions(string dirName, string username) { string user = System.Environment.

我在远程服务器上有一个widows文件夹,希望从中删除特定用户的权限。我尝试了很多方法,但似乎都不管用

以下代码没有错误,但权限保持不变。我是否没有使用正确的对象,或者缺少使用这些对象的步骤?如蒙协助,将不胜感激

目录名作为共享传递,例如。\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后,需要将其应用于文件夹


循环后。

您是否使用提升的(以管理员身份运行)权限执行应用程序?是-我是执行的域管理员。我可以通过代码添加任意多的权限,但不能删除任何via代码。哎呀,前面的评论说得太快了。这个技巧做得很好。谢谢Richard。@ChibuezeOpata:在英国/国际英语中,“诡计”一词并不像我在美国英语中所说的那样意味着欺骗或不当行为。“那就行了”是一个常见的表达方式,意思就是“行得通”。
dirinfo.SetAccessControl(dsec);