Получить права доступа к файлу для текущего пользователя.net

Я сканирую папку для файлов, и мне нужно получить разрешения для каждого файла для текущего пользователя любым способом, чтобы он был представлен в виде строки. Поэтому для свойств вложенного файла я хотел бы представить что-то вроде строки fmrw.

Я пытаюсь выполнить это в моем цикле сканирования, как это, но получаю пустые строки. Не могли бы вы намекнуть, куда мне идти отсюда или выбрали другой подход? Заранее спасибо!

            string permissionShort = string.Empty;
            DirectorySecurity dSecurity = Directory.GetAccessControl(_directory.FullName);
            foreach (FileSystemAccessRule rule in dSecurity.GetAccessRules(true, true, typeof(NTAccount)))
            {
                if (rule.FileSystemRights == FileSystemRights.Write)
                    permissionShort = permissionShort + "x";
                if (rule.FileSystemRights == FileSystemRights.Read)
                    permissionShort = permissionShort + "x";
                if (rule.FileSystemRights == FileSystemRights.AppendData)
                    permissionShort = permissionShort + "x";
                if (rule.FileSystemRights == FileSystemRights.Modify)
                    permissionShort = permissionShort + "x";
                if (rule.FileSystemRights == FileSystemRights.ExecuteFile)
                    permissionShort = permissionShort + "x";
            }

1 ответ

FileSystemRights является помеченным перечислением, это означает, что вы должны выполнить операцию AND для проверки единственного значения перечисления.

    string scanPath = @"C:\Test";
    string permissionShort = string.Empty;
    DirectorySecurity dSecurity = Directory.GetAccessControl(scanPath);
    foreach (FileSystemAccessRule rule in dSecurity.GetAccessRules(true, true, typeof(NTAccount)))
    {
        permissionShort += rule.FileSystemRights.ToString() + " : ";
        permissionShort += ((rule.FileSystemRights & FileSystemRights.FullControl) == FileSystemRights.FullControl) ? "f" : "-";
        permissionShort += ((rule.FileSystemRights & FileSystemRights.Write)== FileSystemRights.Write) ? "w" : "-";
        permissionShort += ((rule.FileSystemRights & FileSystemRights.Read) == FileSystemRights.Read) ? "r" : "-";
        permissionShort += ((rule.FileSystemRights & FileSystemRights.AppendData) == FileSystemRights.AppendData) ? "a" : "-";
        permissionShort += ((rule.FileSystemRights & FileSystemRights.Modify) == FileSystemRights.Modify) ? "m" : "-";
        permissionShort += ((rule.FileSystemRights & FileSystemRights.ExecuteFile) == FileSystemRights.ExecuteFile) ? "e" : "-";
        permissionShort += "\n";
    }
Другие вопросы по тегам