无法为文件夹设置“完全控制”权限

问题描述 投票:5回答:2

我正在尝试通过C#将Full Control权限(对于NT服务帐户)添加到文件夹中。但是,未设置权限,我在这里缺少什么?

var directoryInfo = new DirectoryInfo(@"C:\Test");
var directorySecurity = directoryInfo.GetAccessControl();

directorySecurity.AddAccessRule(new FileSystemAccessRule("NT Service\\FileMoverService",
    FileSystemRights.FullControl, AccessControlType.Allow));

directoryInfo.SetAccessControl(directorySecurity);

folder permissions

c# acl ntfs
2个回答
5
投票

您需要指定继承标志:

directorySecurity.AddAccessRule(new FileSystemAccessRule(@"NT Service\FileMoverService",
    FileSystemRights.FullControl,
    InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
    PropagationFlags.None,
    AccessControlType.Allow));

3
投票

方法GrantFullControl可用于为给定目录和用户设置Full Control权限。

private static void GrantFullControl(string directoryPath, string username)
{
    if (!Directory.Exists(directoryPath))
        return;

    var directorySecurity = Directory.GetAccessControl(directoryPath);
    directorySecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.FullControl,
        InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None,
        AccessControlType.Allow));

    Directory.SetAccessControl(directoryPath, directorySecurity);
}

只需调用如下所示的方法即可。

GrantFullControl(@"C:\Test", @"NT Service\FileMoverService");
© www.soinside.com 2019 - 2024. All rights reserved.