gpt4 book ai didi

c# - 在 C# 中更改子文件夹的权限

转载 作者:太空狗 更新时间:2023-10-30 00:46:42 27 4
gpt4 key购买 nike

我正在编写一个 DLL 来更改文件夹和文件夹下所有内容的权限。下面是我现在拥有的代码。

当我调用 addPermissions() 时出现问题。它正确地设置了 dirName 文件夹和我后来在 dirName 下创建的任何文件夹的权限,但是当我添加权限时存在的任何文件夹都没有获得额外的权限。

我是否需要递归地设置所有子文件夹的权限?或者有没有办法用一两行代码来做到这一点?

public class Permissions
{
public void addPermissions(string dirName, string username)
{
changePermissions(dirName, username, AccessControlType.Allow);
}

public void revokePermissions(string dirName, string username)
{
changePermissions(dirName, username, AccessControlType.Deny);
}

private void changePermissions(string dirName, string username, AccessControlType newPermission)
{
DirectoryInfo myDirectoryInfo = new DirectoryInfo(dirName);

DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl();

string user = System.Environment.UserDomainName + "\\" + username;

myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(
user,
FileSystemRights.Read | FileSystemRights.Write | FileSystemRights.ExecuteFile | FileSystemRights.Delete,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.InheritOnly,
newPermission
));

myDirectoryInfo.SetAccessControl(myDirectorySecurity);
}
}

最佳答案

这个问题很老,但我一直在寻找同样的东西并找到了解决方案:

var dirInfo = new DirectoryInfo(dirName);
var dirSecurity = dirInfo.GetAccessControl();

// Add the DirectorySystemAccessRule to the security settings.
dirSecurity.AddAccessRule(new FileSystemAccessRule(
account,
rights,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.None,
AccessControlType.Allow));

// Set the new access settings.
dirInfo.SetAccessControl(dirSecurity);

问候

关于c# - 在 C# 中更改子文件夹的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2510565/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com