FileIOPermission FileIOPermission FileIOPermission FileIOPermission Class

Определение

Управляет возможностью доступа к файлам и папкам.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.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 и чтения и записи C:\example\out.txt.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(FileIOPermissionAccess, AccessControlActions, String) FileIOPermission(FileIOPermissionAccess, AccessControlActions, String) 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(FileIOPermissionAccess, AccessControlActions, String[]) FileIOPermission(FileIOPermissionAccess, AccessControlActions, String[]) 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(FileIOPermissionAccess, String) FileIOPermission(FileIOPermissionAccess, String) 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(FileIOPermissionAccess, String[]) FileIOPermission(FileIOPermissionAccess, String[]) 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(PermissionState) FileIOPermission(PermissionState) FileIOPermission(PermissionState)

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

Свойства

AllFiles AllFiles AllFiles AllFiles

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

AllLocalFiles AllLocalFiles AllLocalFiles AllLocalFiles

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

Методы

AddPathList(FileIOPermissionAccess, String) AddPathList(FileIOPermissionAccess, String) AddPathList(FileIOPermissionAccess, String) AddPathList(FileIOPermissionAccess, String)

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

AddPathList(FileIOPermissionAccess, String[]) AddPathList(FileIOPermissionAccess, String[]) AddPathList(FileIOPermissionAccess, String[]) AddPathList(FileIOPermissionAccess, String[])

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

Assert() Assert() Assert() 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.

(Inherited from CodeAccessPermission)
Copy() Copy() Copy() Copy()

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

Demand() Demand() Demand() 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.

(Inherited from CodeAccessPermission)
Deny() Deny() Deny() 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.

(Inherited from CodeAccessPermission)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

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

FromXml(SecurityElement) FromXml(SecurityElement) FromXml(SecurityElement) FromXml(SecurityElement)

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

GetHashCode() GetHashCode() GetHashCode() 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) GetPathList(FileIOPermissionAccess) GetPathList(FileIOPermissionAccess) GetPathList(FileIOPermissionAccess)

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

GetType() GetType() GetType() GetType()

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

(Inherited from Object)
Intersect(IPermission) Intersect(IPermission) Intersect(IPermission) Intersect(IPermission)

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

IsSubsetOf(IPermission) IsSubsetOf(IPermission) IsSubsetOf(IPermission) IsSubsetOf(IPermission)

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

IsUnrestricted() IsUnrestricted() IsUnrestricted() IsUnrestricted()

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

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

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

(Inherited from Object)
PermitOnly() PermitOnly() PermitOnly() 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.

(Inherited from CodeAccessPermission)
SetPathList(FileIOPermissionAccess, String) SetPathList(FileIOPermissionAccess, String) SetPathList(FileIOPermissionAccess, String) SetPathList(FileIOPermissionAccess, String)

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

SetPathList(FileIOPermissionAccess, String[]) SetPathList(FileIOPermissionAccess, String[]) SetPathList(FileIOPermissionAccess, String[]) 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() ToString() ToString() ToString()

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

(Inherited from CodeAccessPermission)
ToXml() ToXml() ToXml() ToXml()

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

Union(IPermission) Union(IPermission) Union(IPermission) Union(IPermission)

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

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

IPermission.Demand() IPermission.Demand() IPermission.Demand() IPermission.Demand() Inherited from CodeAccessPermission
IStackWalk.Assert() IStackWalk.Assert() IStackWalk.Assert() IStackWalk.Assert() Inherited from CodeAccessPermission
IStackWalk.Demand() IStackWalk.Demand() IStackWalk.Demand() IStackWalk.Demand() Inherited from CodeAccessPermission
IStackWalk.Deny() IStackWalk.Deny() IStackWalk.Deny() IStackWalk.Deny() Inherited from CodeAccessPermission
IStackWalk.PermitOnly() IStackWalk.PermitOnly() IStackWalk.PermitOnly() IStackWalk.PermitOnly() Inherited from CodeAccessPermission

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

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