Получить права доступа к файлу для текущего пользователя.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";
}