修改现有的访问控制项

本文关键字:访问控制 控制项 访问 修改 | 更新日期: 2023-09-27 18:08:34

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

我正在制作一个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);

我尝试了ModifyAccessRule并得到了相同的行为。

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

修改现有的访问控制项

ModifyAccessRule代替AddAccessRule

见http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.objectsecurity.modifyaccessrule.aspx