1

我在 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);

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

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

1 回答 1

1

使用ModifyAccessRule而不是AddAccessRule.

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

于 2013-04-11T14:49:40.530 回答