Подтвердить что ты не робот

Программно назначить разрешение списка управления доступом (ACL) на "эту папку, подпапки и файлы",

Я должен назначить разрешение на папку, а ее дочернюю папку и файлы программным образом использовать С#.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". enter image description here

В: Как я могу определить экземпляр FileSystemAccessRule для назначения прав на папку ROOT, подпапки и файлы?

4b9b3361

Ответ 1

Вам просто нужно удалить флаг PropagationFlags.InheritOnly. Указав, что вы заявляете, что ACE не должен применяться к целевой папке. Вместо этого используйте PropagationFlags.None. Вы можете найти эту статью MSDN.