Получить права на папку

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

try
{

   DirectorySecurity ds = Directory.GetAccessControl(path);

   foreach (FileSystemAccessRule rule in ds.GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier)))
   {
      if ((rule.FileSystemRights & FileSystemRights.CreateFiles) > 0 /*== FileSystemRights.CreateFiles)*/)
         return true;
   }
}
catch (UnauthorizedAccessException e)
{
   return false;
}
return false;

Моя проблема: FileSystemAccessRule сказал, что у меня есть разрешения, но когда я хочу создать свой файл, появляется исключение "unauthorizedexception".

Я пытался использовать DirectoryInfo, вот так:

DirectoryInfo di = new DirectoryInfo(path);
DirectorySecurity ds = di.GetAccessControl();

вместо того, чтобы использовать объект "Каталог" напрямую. Кроме того, я думал, что моя проблема была связана с GetAccessRules, поэтому я попытался использовать SecurityIdentifier и NTAccount, оба сказали, что у меня есть все права на эту папку (FullControl), тогда как в конце я не имею никакого права, И конечно мой путь хорош, я проверил его.

Кто-то знает другой способ получить права на папку, или, если я что-то не так делаю, небольшая помощь будет удовольствием.

1 ответ

Я думаю, что проблема с вашим кодом в том, что он не проверяет конкретных пользователей, которые имеют доступ. GetAccessControl получает список ВСЕХ пользователей, к которым применено любое правило доступа, а не только ВЫ.

Здесь уже есть отличный ответ, как правильно выполнить проверку: проверка прав доступа к каталогам и файлам в.NET

Другие вопросы по тегам