Невозможно установить разрешение «Полный доступ» для папки - PullRequest
5 голосов
/ 26 марта 2019

Я пытаюсь добавить разрешение Full Control (для учетной записи службы NT) в папку через C #. Однако разрешение не установлено, что мне здесь не хватает?

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

Ответы [ 2 ]

5 голосов
/ 26 марта 2019

Вам необходимо указать флаги наследования:

directorySecurity.AddAccessRule(new FileSystemAccessRule(@"NT Service\FileMoverService",
    FileSystemRights.FullControl,
    InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
    PropagationFlags.None,
    AccessControlType.Allow));
3 голосов
/ 26 марта 2019

Метод 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");
...