FileIOPermission Класс

Определение

Управляет возможностью доступа к файлам и папкам.Controls the ability to access files and folders. Этот класс не наследуется.This class cannot be inherited.

public ref class FileIOPermission sealed : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
Public NotInheritable Class FileIOPermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
Наследование
FileIOPermission
Атрибуты
Реализации

Примеры

В следующих примерах показан код, использующий FileIOPermission.The following examples illustrate code that uses FileIOPermission. После следующих двух строк кода объект f представляет разрешение на чтение всех файлов на локальных дисках клиентского компьютера.After the following two lines of code, the object f represents permission to read all files on the client computer's local disks. Затем в примере кода запрашивается разрешение на определение наличия у приложения разрешения на чтение файлов.The code example then demands the permission to determine whether the application has permission to read the files.

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, а также чтение и запись в к:\ексампле\аут.ткст.After the following two lines of code, the object f2 represents permissions to read C:\test_r and read and write to C:\example\out.txt. Readи Write представляют разрешения на доступ к файлам и папкам, как описано выше.Read and Write represent the file/folder permissions as previously described. После создания разрешения код требует разрешения, чтобы определить, имеет ли приложение право на чтение и запись в файл.After creating the permission, the code demands the permission to determine whether the application has the right to read and write to the file.

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

Комментарии

Это разрешение различает следующие четыре типа доступа к файлу ввода-вывода, FileIOPermissionAccessпредоставляемые:This permission distinguishes between the following four types of file IO access provided by FileIOPermissionAccess:

  • Read: Доступ для чтения к содержимому файла или к сведениям о файле, например его длине или времени последнего изменения.Read: Read access to the contents of the file or access to information about the file, such as its length or last modification time.

  • Write: Доступ для записи к содержимому файла или к сведениям об изменении файла, например его имени.Write: Write access to the contents of the file or access to change information about the file, such as its name. Также позволяет удалять и перезаписывать.Also allows for deletion and overwriting.

  • Append: Возможность записи только в конец файла.Append: Ability to write to the end of a file only. Нет возможности читать.No ability to read.

  • PathDiscovery: Доступ к сведениям в самом пути.PathDiscovery: Access to the information in the path itself. Это помогает защитить конфиденциальные сведения в пути, например имена пользователей, а также сведения о структуре каталогов, которая отображается в пути.This helps protect sensitive information in the path, such as user names, as well as information about the directory structure that is revealed in the path. Это значение не предоставляет доступа к файлам и папкам, на которые указывает путь.This value does not grant access to files or folders represented by the path.

Примечание

Предоставление Write доступа к сборке аналогично предоставлению полного доверия.Giving Write access to an assembly is similar to granting it full trust. Если приложение не должно выполнять запись в файловую систему, оно не должно иметь Write доступа.If an application should not write to the file system, it should not have Write access.

Все эти разрешения являются независимыми, то есть права на один из них не подразумевают прав на другой.All these permissions are independent, meaning that rights to one do not imply rights to another. Например, Write разрешение не подразумевает разрешение на Read или Append.For example, Write permission does not imply permission to Read or Append. Если требуется более одного разрешения, их можно объединить с помощью побитовой операции или, как показано в следующем примере кода.If more than one permission is desired, they can be combined using a bitwise OR as shown in the code example that follows. Разрешение на файл определяется в виде канонических абсолютных путей; вызовы всегда должны выполняться с использованием канонических путей к файлам.File permission is defined in terms of canonical absolute paths; calls should always be made with canonical file paths.

FileIOPermissionописывает защищенные операции с файлами и папками.FileIOPermission describes protected operations on files and folders. File Класс помогает обеспечить безопасный доступ к файлам и папкам.The File class helps provide secure access to files and folders. Проверка доступа к системе безопасности выполняется при создании маркера файла.The security access check is performed when the handle to the file is created. Выполняя проверку во время создания, снижение производительности проверки безопасности сводится к минимуму.By doing the check at creation time, the performance impact of the security check is minimized. Открытие файла происходит один раз, а чтение и запись могут происходить несколько раз.Opening a file happens once, while reading and writing can happen multiple times. После открытия файла дальнейшие проверки не выполняются.Once the file is opened, no further checks are done. Если объект передается недоверенному вызывающему объекту, он может быть неиспользованным.If the object is passed to an untrusted caller, it can be misused. Например, дескрипторы файлов не должны храниться в общедоступных глобальных статических шаблонах, где код с меньшими разрешениями может получить к ним доступ.For example, file handles should not be stored in public global statics where code with less permission can access them.

FileIOPermissionAccessУказывает действия, которые могут быть выполнены с файлом или папкой.FileIOPermissionAccess specifies actions that can be performed on the file or folder. Кроме того, эти действия можно комбинировать с помощью побитового или для формирования сложных экземпляров.In addition, these actions can be combined using a bitwise OR to form complex instances.

Доступ к папке подразумевает доступ ко всем содержащимся в нем файлам, а также доступ ко всем файлам и папкам во вложенных папках.Access to a folder implies access to all the files it contains, as well as access to all the files and folders in its subfolders. Например, Read доступ к C:\folder1\ подразумевает Read доступ к C:\folder1\file1.txt, C:\folder1\folder2\, C:\folder1\folder2\file2.txt и т. д.For example, Read access to C:\folder1\ implies Read access to C:\folder1\file1.txt, C:\folder1\folder2\, C:\folder1\folder2\file2.txt, and so on.

Примечание

В версиях .NET Framework до .NET Framework 4.NET Framework 4можно CodeAccessPermission.Deny использовать метод, чтобы предотвратить случайный доступ к системным ресурсам с помощью доверенного кода.In versions of the .NET Framework before the .NET Framework 4.NET Framework 4, you could use the CodeAccessPermission.Deny method to prevent inadvertent access to system resources by trusted code. Denyтеперь устарел, а доступ к ресурсам определяется исключительно предоставленным набором разрешений для сборки.Deny is now obsolete, and access to resources is now determined solely by the granted permission set for an assembly. Чтобы ограничить доступ к файлам, необходимо запустить частично доверенный код в песочнице и назначить ему разрешения только тем ресурсам, к которым разрешен доступ коду.To limit access to files, you must run partially trusted code in a sandbox and assign it permissions only to resources that the code is allowed to access. Сведения о запуске приложения в песочнице см. в разделе как Выполнение не вполне безопасного кода в изолированной среде.For information about running an application in a sandbox, see How to: Run Partially Trusted Code in a Sandbox.

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

FileIOPermission(FileIOPermissionAccess, AccessControlActions, String)

Инициализирует новый экземпляр класса FileIOPermission указанным доступом к назначенному файлу или каталогу, а также заданными правами доступа к сведениям об управлении файлами.Initializes a new instance of the FileIOPermission class with the specified access to the designated file or directory and the specified access rights to file control information.

FileIOPermission(FileIOPermissionAccess, AccessControlActions, String[])

Инициализирует новый экземпляр класса FileIOPermission с указанным доступом к назначенным файлам и каталогам, а также с заданными правами доступа к сведениям об управлении файлами.Initializes a new instance of the FileIOPermission class with the specified access to the designated files and directories and the specified access rights to file control information.

FileIOPermission(FileIOPermissionAccess, String)

Инициализирует новый экземпляр класса FileIOPermission с заданным доступом к указанному файлу или каталогу.Initializes a new instance of the FileIOPermission class with the specified access to the designated file or directory.

FileIOPermission(FileIOPermissionAccess, String[])

Инициализирует новый экземпляр класса FileIOPermission заданным уровнем доступа к указанным файлам или каталогам.Initializes a new instance of the FileIOPermission class with the specified access to the designated files and directories.

FileIOPermission(PermissionState)

Инициализирует новый экземпляр класса FileIOPermission указанным состоянием разрешения: полностью ограниченное или неограниченное.Initializes a new instance of the FileIOPermission class with fully restricted or unrestricted permission as specified.

Свойства

AllFiles

Получает или задает разрешенный доступ ко всем файлам.Gets or sets the permitted access to all files.

AllLocalFiles

Получает или задает разрешенный доступ ко всем локальным файлам.Gets or sets the permitted access to all local files.

Методы

AddPathList(FileIOPermissionAccess, String)

Добавляет доступ для заданного файла или каталога к существующему состоянию разрешения.Adds access for the specified file or directory to the existing state of the permission.

AddPathList(FileIOPermissionAccess, String[])

Добавляет доступ для заданных файлов или каталогов к существующему состоянию разрешения.Adds access for the specified files and directories to the existing state of the permission.

Assert()

Объявляет, что вызывающий код может получить доступ к ресурсу, защищенному требованием разрешения, через код, вызывающий этот метод, даже если вызывающим объектам выше в стеке вызовов не предоставлено разрешение на доступ к ресурсу.Declares that the calling code can access the resource protected by a permission demand through the code that calls this method, even if callers higher in the stack have not been granted permission to access the resource. Assert() может вызвать проблемы системы безопасности.Using Assert() can create security issues.

(Унаследовано от CodeAccessPermission)
Copy()

Создает и возвращает идентичную копию текущего разрешения.Creates and returns an identical copy of the current permission.

Demand()

Принудительно создает SecurityException во время выполнения, если все вызывающие методы, расположенные выше в стеке вызовов, не получили разрешения, указанного текущим экземпляром.Forces a SecurityException at run time if all callers higher in the call stack have not been granted the permission specified by the current instance.

(Унаследовано от CodeAccessPermission)
Deny()

Запрещает вызывающим объектам выше в стеке вызовов использовать код, который вызывает этот метод для доступа к ресурсу, указанному текущим экземпляром.Prevents callers higher in the call stack from using the code that calls this method to access the resource specified by the current instance.

(Унаследовано от CodeAccessPermission)
Equals(Object)

Определяет, равен ли заданный объект FileIOPermission текущему объекту FileIOPermission.Determines whether the specified FileIOPermission object is equal to the current FileIOPermission.

FromXml(SecurityElement)

Восстанавливает разрешение с указанным состоянием из кодировки XML.Reconstructs a permission with a specified state from an XML encoding.

GetHashCode()

Возвращает хэш-код для объекта FileIOPermission, который можно использовать в алгоритмах хэширования и структурах данных, например в хэш-таблице.Gets a hash code for the FileIOPermission object that is suitable for use in hashing algorithms and data structures such as a hash table.

GetPathList(FileIOPermissionAccess)

Возвращает все файлы и каталоги с заданным FileIOPermissionAccess.Gets all files and directories with the specified FileIOPermissionAccess.

GetType()

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

(Унаследовано от Object)
Intersect(IPermission)

Создает и возвращает разрешение, представляющее собой пересечение текущего и указанного разрешений.Creates and returns a permission that is the intersection of the current permission and the specified permission.

IsSubsetOf(IPermission)

Определяет, является ли текущее разрешение подмножеством указанного разрешения.Determines whether the current permission is a subset of the specified permission.

IsUnrestricted()

Возвращает значение, указывающее, является ли текущее разрешение неограниченным.Returns a value indicating whether the current permission is unrestricted.

MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
PermitOnly()

Запрещает вызывающим объектам выше в стеке вызовов использовать код, который вызывает этот метод для доступа ко всем ресурсам, за исключением ресурса, указанного текущим экземпляром.Prevents callers higher in the call stack from using the code that calls this method to access all resources except for the resource specified by the current instance.

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

Задает указанный доступ к указанному файлу или каталогу, заменяя существующее состояние разрешения.Sets the specified access to the specified file or directory, replacing the existing state of the permission.

SetPathList(FileIOPermissionAccess, String[])

Устанавливает заданный доступ для указанных файлов и каталогов, заменяя текущее состояние заданного доступа на новый набор путей.Sets the specified access to the specified files and directories, replacing the current state for the specified access with the new set of paths.

ToString()

Создает и возвращает строковое представление текущего объекта разрешений.Creates and returns a string representation of the current permission object.

(Унаследовано от CodeAccessPermission)
ToXml()

Создает кодировку XML для разрешения и его текущего состояния.Creates an XML encoding of the permission and its current state.

Union(IPermission)

Создает разрешение, представляющее собой объединение текущего и указанного разрешений.Creates a permission that is the union of the current permission and the specified permission.

Явные реализации интерфейса

IPermission.Demand() (Унаследовано от CodeAccessPermission)
IStackWalk.Assert() (Унаследовано от CodeAccessPermission)
IStackWalk.Demand() (Унаследовано от CodeAccessPermission)
IStackWalk.Deny() (Унаследовано от CodeAccessPermission)
IStackWalk.PermitOnly() (Унаследовано от CodeAccessPermission)

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

Дополнительно