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. После следующих двух строк кода объект 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) |
Устаревшие..
Создает разрешение, представляющее собой объединение текущего и указанного разрешений. |