.NET 4.x Проверка прав доступа к папке - C#

Узнай цену своей работы

Формулировка задачи:

Прошу помощи. Необходимо в указаном пути перебрать папки на доступ к ней юзера.
Листинг программы
  1. string abc;
  2. Console.WriteLine("Введите диска");
  3. abc = Console.ReadLine();
  4. string drive = abc + @":\";
  5. DirectoryInfo dir = new DirectoryInfo(drive); //тут я получил директорию где лежат папки
  6. DirectoryInfo[] alldir = dir.GetDirectories();//получил все директории на диске
  7. string nameuser = WindowsIdentity.GetCurrent().Name;
  8. FileSystemAccessRule acr = new FileSystemAccessRule(nameuser, FileSystemRights.Write, AccessControlType.Allow);
  9. foreach (DirectoryInfo name in alldir) //перебираем все папки в директории
  10. {
  11. DirectorySecurity ds = name.GetAccessControl(AccessControlSections.Access);//получаем права папок
А вот как сравнить, что пользователь имеет доступ на запись в директорию.

Решение задачи: «.NET 4.x Проверка прав доступа к папке»

textual
Листинг программы
  1. string drive = abc + @":\";
  2.             DirectoryInfo dir = new DirectoryInfo(drive);
  3.             DirectoryInfo[] alldir = dir.GetDirectories();
  4.             WindowsIdentity wi = WindowsIdentity.GetCurrent();
  5.             foreach (DirectoryInfo name in alldir)
  6.             {
  7.                 DirectorySecurity ds = name.GetAccessControl(AccessControlSections.Access);
  8.                 AuthorizationRuleCollection rules = ds.GetAccessRules(true, true, typeof(SecurityIdentifier));
  9.                 foreach (FileSystemAccessRule rl in rules)
  10.                 {
  11.                     SecurityIdentifier sid = (SecurityIdentifier)rl.IdentityReference;
  12.                     if (((rl.FileSystemRights & FileSystemRights.WriteData) == FileSystemRights.WriteData))
  13.                     {
  14.                         if ((sid.IsAccountSid() && wi.User == sid) ||
  15.                             (!sid.IsAccountSid() && wi.Groups.Contains(sid)))
  16.                         {
  17.                             if (rl.AccessControlType == AccessControlType.Allow)
  18.                             {
  19.                                 Console.WriteLine("Доступ к папке {0} для пользователя - {1} разрешен", name.Name, wi.Name);
  20.                             }
  21.                             else
  22.                             {
  23.                                 Console.WriteLine("Доступ к папке {0} для пользователя - {1} запрещен", name.Name, wi.Name);
  24.                             }
  25.                         }
  26.                     }
  27.                 }
  28.             }
  29.             Console.ReadLine();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы