.NET - Проверка, если каталог доступен без обработки исключений

Я должен пройти различные каталоги на компьютере (через DirectoryInfo). Некоторые из них не доступны, и UnauthorizedAccessException происходит. Как я могу проверить доступ каталога, не ловя исключение?

12
задан Fionnuala 25 February 2010 в 20:47
поделиться

3 ответа

Вам необходимо использовать пространство имен Security .

См. этот ТАК ответ.

Из ответов:

FileIOPermission writePermission = new FileIOPermission(FileIOPermissionAccess.Write, filename);
if(!SecurityManager.IsGranted(writePermission))
{
  //No permission. 
  //Either throw an exception so this can be handled by a calling function
  //or inform the user that they do not have permission to write to the folder and return.
}

Обновление: (следующие комментарии)

FileIOPermission касается политик безопасности, а не разрешений файловой системы, поэтому вам нужно использовать DirectoryInfo.GetAccessControl .

10
ответ дан 2 December 2019 в 18:18
поделиться

Проще говоря, вы не можете. Не существует способа проверить, доступен ли каталог, все, что вы можете определить, это то, что он был доступен. Причина в том, что как только проверка завершится, разрешения могут измениться и сделать проверку недействительной. Самая надежная стратегия, которую вы можете применить, это получить доступ к каталогам и поймать UnauthorizedAccessException.

Недавно я написал статью в блоге на эту тему, в которой немного подробно рассказывается здесь

11
ответ дан 2 December 2019 в 18:18
поделиться

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

-1
ответ дан 2 December 2019 в 18:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: