Поделиться через


FileIOPermission Класс

Определение

Внимание!

Code Access Security is not supported or honored by the runtime.

Управляет возможностью доступа к файлам и папкам. Этот класс не наследуется.

public ref class FileIOPermission sealed : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Serializable>]
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
Public NotInheritable Class FileIOPermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
Наследование
FileIOPermission
Атрибуты
Реализации

Примеры

В следующих примерах показан код, использующий FileIOPermission. После следующих двух строк кода объект f представляет разрешение на чтение всех файлов на локальных дисках клиентского компьютера. Затем в примере кода требуется разрешение, чтобы определить, имеет ли приложение разрешение на чтение файлов.

FileIOPermission^ f = gcnew FileIOPermission( PermissionState::None );
f->AllLocalFiles = FileIOPermissionAccess::Read;
try
{
    f->Demand();
}
catch (SecurityException^ s)
{
    Console::WriteLine(s->Message);
}
FileIOPermission f = new FileIOPermission(PermissionState.None);
f.AllLocalFiles = FileIOPermissionAccess.Read;
try
{
    f.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}
Dim f As New FileIOPermission(PermissionState.None)
f.AllLocalFiles = FileIOPermissionAccess.Read
Try
    f.Demand()
Catch s As SecurityException
    Console.WriteLine(s.Message)
End Try

После следующих двух строк кода объект f2 представляет разрешения на чтение C:\test_r, а также чтение и запись в C:\example\out.txt. Read и Write представляют разрешения для файлов и папок, как описано выше. После создания разрешения код требует разрешения, чтобы определить, имеет ли приложение право на чтение и запись в файл.

FileIOPermission^ f2 = gcnew FileIOPermission( FileIOPermissionAccess::Read,"C:\\test_r" );
f2->AddPathList( (FileIOPermissionAccess) (FileIOPermissionAccess::Write | FileIOPermissionAccess::Read), "C:\\example\\out.txt" );
try
{
    f2->Demand();
}
catch (SecurityException^ s)
{
    Console::WriteLine(s->Message);
}
FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, "C:\\example\\out.txt");
try
{
    f2.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}
Dim f2 As New FileIOPermission(FileIOPermissionAccess.Read, "C:\test_r")
f2.AddPathList(FileIOPermissionAccess.Write Or FileIOPermissionAccess.Read, "C:\example\out.txt")
Try
    f2.Demand()
Catch s As SecurityException
    Console.WriteLine(s.Message)
End Try

Комментарии

Внимание!

Безопасность доступа к коду (CAS) является устаревшей во всех версиях платформа .NET Framework и .NET. В последних версиях .NET заметки CAS не учитываются и при использовании API, связанных с CAS, возникают ошибки. Разработчикам следует искать альтернативные способы выполнения задач безопасности.

Это разрешение различает следующие четыре типа доступа к файлу ввода-вывода, предоставляемые FileIOPermissionAccess:

  • Read: чтение доступа к содержимому файла или доступа к сведениям о файле, например его длине или времени последнего изменения.

  • Write: запись доступа к содержимому файла или для изменения сведений о файле, например его имени. Также позволяет удалять и перезаписывать.

  • Append: возможность записи только в конец файла. Нет возможности чтения.

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

Примечание

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

Все эти разрешения являются независимыми, а это означает, что права на один не подразумевают права на другой. Например, Write разрешение не подразумевает разрешения на Read или Append. Если необходимо несколько разрешений, их можно объединить с помощью побитового или, как показано в примере кода ниже. Разрешение файла определяется в терминах канонических абсолютных путей; Вызовы всегда должны выполняться с каноническими путями к файлам.

FileIOPermission описывает защищенные операции с файлами и папками. Класс File помогает обеспечить безопасный доступ к файлам и папкам. При создании дескриптора для файла выполняется проверка доступа к безопасности. При выполнении проверка во время создания влияние проверка безопасности на производительность сводится к минимуму. Открытие файла происходит один раз, а чтение и запись могут выполняться несколько раз. После открытия файла дальнейшие проверки не выполняются. Если объект передается ненадежной вызывающей объекту, его можно использовать неправильно. Например, дескрипторы файлов не должны храниться в общедоступных глобальных статических службах, где код с меньшими разрешениями может получить к ним доступ.

FileIOPermissionAccess указывает действия, которые могут выполняться с файлом или папкой. Кроме того, эти действия можно объединить с помощью побитового или для формирования сложных экземпляров.

Доступ к папке подразумевает доступ ко всем содержащимся в ней файлам, а также ко всем файлам и папкам во вложенных папках. Например, Read доступ к C:\folder1\ подразумевает Read доступ к C:\folder1\file1.txt, C:\folder1\folder2\, C:\folder1\folder2\file2.txt и т. д.

Примечание

В версиях платформа .NET Framework до платформа .NET Framework 4 можно использовать CodeAccessPermission.Deny метод , чтобы предотвратить непреднамеренный доступ к системным ресурсам с помощью доверенного кода. Deny теперь является устаревшим, а доступ к ресурсам теперь определяется исключительно предоставленным набором разрешений для сборки. Чтобы ограничить доступ к файлам, необходимо запустить частично доверенный код в песочнице и назначить ему разрешения только для ресурсов, к которым коду разрешен доступ. Сведения о запуске приложения в песочнице см. в разделе Практическое руководство. Выполнение частично доверенного кода в песочнице.

Конструкторы

FileIOPermission(FileIOPermissionAccess, AccessControlActions, String)
Устаревшие..

Инициализирует новый экземпляр класса FileIOPermission указанным доступом к назначенному файлу или каталогу, а также заданными правами доступа к сведениям об управлении файлами.

FileIOPermission(FileIOPermissionAccess, AccessControlActions, String[])
Устаревшие..

Инициализирует новый экземпляр класса FileIOPermission с указанным доступом к назначенным файлам и каталогам, а также с заданными правами доступа к сведениям об управлении файлами.

FileIOPermission(FileIOPermissionAccess, String)
Устаревшие..

Инициализирует новый экземпляр класса FileIOPermission с заданным доступом к указанному файлу или каталогу.

FileIOPermission(FileIOPermissionAccess, String[])
Устаревшие..

Инициализирует новый экземпляр класса FileIOPermission заданным уровнем доступа к указанным файлам или каталогам.

FileIOPermission(PermissionState)
Устаревшие..

Инициализирует новый экземпляр класса FileIOPermission указанным состоянием разрешения: полностью ограниченное или неограниченное.

Свойства

AllFiles
Устаревшие..

Получает или задает разрешенный доступ ко всем файлам.

AllLocalFiles
Устаревшие..

Получает или задает разрешенный доступ ко всем локальным файлам.

Методы

AddPathList(FileIOPermissionAccess, String)
Устаревшие..

Добавляет доступ для заданного файла или каталога к существующему состоянию разрешения.

AddPathList(FileIOPermissionAccess, String[])
Устаревшие..

Добавляет доступ для заданных файлов или каталогов к существующему состоянию разрешения.

Assert()
Устаревшие..

Объявляет, что вызывающий код может получить доступ к ресурсу, защищенному требованием разрешения, через код, вызывающий этот метод, даже если вызывающим объектам выше в стеке вызовов не предоставлено разрешение на доступ к ресурсу. Assert() может вызвать проблемы системы безопасности.

(Унаследовано от CodeAccessPermission)
Copy()
Устаревшие..

Создает и возвращает идентичную копию текущего разрешения.

Demand()
Устаревшие..

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

(Унаследовано от CodeAccessPermission)
Deny()
Устаревшие..
Устаревшие..

Запрещает вызывающим объектам выше в стеке вызовов использовать код, который вызывает этот метод для доступа к ресурсу, указанному текущим экземпляром.

(Унаследовано от CodeAccessPermission)
Equals(Object)
Устаревшие..

Определяет, равен ли заданный объект FileIOPermission текущему объекту FileIOPermission.

Equals(Object)
Устаревшие..

Определяет, равен ли заданный объект CodeAccessPermission текущему объекту CodeAccessPermission.

(Унаследовано от CodeAccessPermission)
FromXml(SecurityElement)
Устаревшие..

Восстанавливает разрешение с указанным состоянием из кодировки XML.

GetHashCode()
Устаревшие..

Возвращает хэш-код для объекта FileIOPermission, который можно использовать в алгоритмах хэширования и структурах данных, например в хэш-таблице.

GetHashCode()
Устаревшие..

Возвращает хэш-код для объекта CodeAccessPermission, который можно использовать в алгоритмах хэширования и структурах данных, например в хэш-таблице.

(Унаследовано от CodeAccessPermission)
GetPathList(FileIOPermissionAccess)
Устаревшие..

Возвращает все файлы и каталоги с заданным FileIOPermissionAccess.

GetType()
Устаревшие..

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
Intersect(IPermission)
Устаревшие..

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

IsSubsetOf(IPermission)
Устаревшие..

Определяет, является ли текущее разрешение подмножеством указанного разрешения.

IsUnrestricted()
Устаревшие..

Возвращает значение, указывающее, является ли текущее разрешение неограниченным.

MemberwiseClone()
Устаревшие..

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
PermitOnly()
Устаревшие..

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

(Унаследовано от CodeAccessPermission)
SetPathList(FileIOPermissionAccess, String)
Устаревшие..

Задает указанный доступ к указанному файлу или каталогу, заменяя существующее состояние разрешения.

SetPathList(FileIOPermissionAccess, String[])
Устаревшие..

Устанавливает заданный доступ для указанных файлов и каталогов, заменяя текущее состояние заданного доступа на новый набор путей.

ToString()
Устаревшие..

Создает и возвращает строковое представление текущего объекта разрешения.

(Унаследовано от CodeAccessPermission)
ToXml()
Устаревшие..

Создает кодировку XML для разрешения и его текущего состояния.

Union(IPermission)
Устаревшие..

Создает разрешение, представляющее собой объединение текущего и указанного разрешений.

Применяется к

См. также раздел