Нет прямого способа посмотреть на запись файловой системы и получить ваши действующие разрешения на нее.А вычисление эффективного набора разрешений для файла или каталога ... сложно (это было бы вежливым способом).
Похоже, это было бы довольно очевидной частью информации о том, что System.IOклассы должны обеспечить, но команда CLR, очевидно, так не думала.Я думаю, что частью проблемы является неотъемлемое состояние гонки.Права доступа к данному объекту являются динамическими и могут измениться в любое время.Они могут даже изменить вашу проверку разрешений и фактический доступ к объекту, что приведет к возникновению исключения.
Эти вопросы имеют некоторую помощь:
Самый простой способ - это потребоватьразрешения, которые вы хотите, поймайте исключение, если у вас их нет, и используйте его для возврата значения bool yes / no:
// you'll need access to the namespace namespace System.Security.Permissions
public bool HasAccess( string path , FileIOPermissionAccess accessDesired )
{
bool isGranted ;
try
{
FileIOPermission permission = new FileIOPermission( accessDesired , path ) ;
permission.Demand() ;
isGranted = true ;
}
catch
{
isGranted = false ;
}
return isGranted ;
}