【问题标题】:Programmatically assign access control list (ACL) permission to 'this folder, subfolders and files'以编程方式将访问控制列表 (ACL) 权限分配给“此文件夹、子文件夹和文件”
【发布时间】:2012-05-14 05:49:53
【问题描述】:

我必须使用 C#.NET 以编程方式分配文件夹及其子文件夹和文件的权限。我这样做如下:

var rootDic = @"C:\ROOT";
var identity = "NETWORK SERVICE"; //The name of a user account.
try
{
    var accessRule = new FileSystemAccessRule(identity,
                         fileSystemRights: FileSystemRights.Modify,
                         inheritanceFlags: InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
                         propagationFlags: PropagationFlags.InheritOnly,
                         type: AccessControlType.Allow);

    var directoryInfo = new DirectoryInfo(rootDic);

    // Get a DirectorySecurity object that represents the current security settings.
    DirectorySecurity dSecurity = directoryInfo.GetAccessControl();

    // Add the FileSystemAccessRule to the security settings. 
    dSecurity.AddAccessRule(accessRule);

    // Set the new access settings.
    directoryInfo.SetAccessControl(dSecurity);
}
catch (Exception ex)
{
    //...
}

它确实为我的“C:\ROOT”文件夹分配了权限。但它仅将权限分配给子文件夹和文件,而不是“ROOT”文件夹。

问:如何定义FileSystemAccessRule 实例来为ROOT 文件夹、子文件夹和文件分配权限?

【问题讨论】:

    标签: c# .net windows winapi


    【解决方案1】:

    您只需要删除PropagationFlags.InheritOnly 标志。通过指定您声明 ACE 不应应用于目标文件夹。请改用PropagationFlags.None。你可能会发现这个MSDN article 很有帮助。

    【讨论】:

    • @Kibria 我很好奇。这有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 2018-11-12
    • 2012-07-13
    • 1970-01-01
    • 2015-05-15
    • 2011-08-07
    • 1970-01-01
    相关资源
    最近更新 更多