Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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# 修改现有的访问控制条目_C#_.net_Windows - Fatal编程技术网

C# 修改现有的访问控制条目

C# 修改现有的访问控制条目,c#,.net,windows,C#,.net,Windows,我在FileSystemRights解释中犯了一个逻辑错误,这导致无论输入什么,它总是应用读取权限。 我正在制作一个ps cmdlet,它将提供一个用户名列表,并修改与用户同名的文件夹的权限。根据我的测试,该脚本将为用户创建新的特殊acl条目,用于允许或拒绝条目,但如果条目已经存在,则不会修改该条目。也就是说,如果用户已经具有读访问权限,而我尝试授予写访问权限,则不会更改条目。我不确定在不完全删除旧权限的情况下如何修改现有权限 DirectoryInfo diDirInfo =

我在FileSystemRights解释中犯了一个逻辑错误,这导致无论输入什么,它总是应用读取权限。

我正在制作一个ps cmdlet,它将提供一个用户名列表,并修改与用户同名的文件夹的权限。根据我的测试,该脚本将为用户创建新的特殊acl条目,用于允许或拒绝条目,但如果条目已经存在,则不会修改该条目。也就是说,如果用户已经具有读访问权限,而我尝试授予写访问权限,则不会更改条目。我不确定在不完全删除旧权限的情况下如何修改现有权限

        DirectoryInfo diDirInfo = new DirectoryInfo(FolderName);
        DirectorySecurity dsDirSecurity = diDirInfo.GetAccessControl();

       //These just interpet the objects for the rights and the allow/deny entries from the command line
        FileSystemRights FSR = genFSR();
        AccessControlType ACT = genAct();

        dsDirSecurity.AddAccessRule(new FileSystemAccessRule(UserName, FSR, ACT));
        diDirInfo.SetAccessControl(dsDirSecurity);
我尝试修改AccessRule,得到了相同的行为

  FileSystemAccessRule fsaRule = new FileSystemAccessRule(UserName, FSR, ACT);      
  dsDirSecurity.ModifyAccessRule(AccessControlModification.Add, fsaRule, out modified);

使用
ModifyAccessRule
代替
AddAccessRule


请参见使用
ModifyAccessRule
而不是
AddAccessRule


请参见

此powershell如何?如果标记错误,请抱歉。我正在用c#制作一个pscmdlet,这有关系吗?读到它看起来不是同一个问题。该脚本正在以管理员身份运行,并且在第一次运行时应用了权限。但是,如果我尝试更改,即首先运行grant read,然后尝试更改为modify或write,则不会将它们从read.Ok更改为read.Ok。很抱歉,我的FileSystemRights定义中有一个输入错误,导致它无论键入什么都应用读取权限。很抱歉,如果这造成了任何混乱。这个powershell如何?如果标记错误,很抱歉。我正在用c#制作一个pscmdlet,这有关系吗?读到它看起来不是同一个问题。该脚本正在以管理员身份运行,并且在第一次运行时应用了权限。但是,如果我尝试更改,即首先运行grant read,然后尝试更改为modify或write,则不会将它们从read.Ok更改为read.Ok。很抱歉,我的FileSystemRights定义中有一个输入错误,导致它无论键入什么都应用读取权限。如果这引起了任何混乱,我很抱歉。