Вопрос по .net, windows, c#, winapi – Программно назначить разрешение списка контроля доступа (ACL) для «этой папки, подпапок и файлов»

13

Я должен назначить разрешение для папки и ее дочерней папки и файлов программно с использованием C # .NET. Я делаю это, как показано ниже:

<code>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)
{
    //...
}
</code>

Это действительно назначает разрешение на мой «C: \ ROOT» папка. Но он назначает разрешение только для подпапок и файлов, но не для «ROOT». папка. enter image description here

Q: How can I define the FileSystemAccessRule instance to assign permission to the ROOT folder, Subfolders and files?

Ваш Ответ

1   ответ
12

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

да, спасибо! Kibria
@ Кибрия, мне любопытно. Это помогло?

Похожие вопросы