FileIOPermission 类

定义

注意

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

控制文件和文件夹的访问权限。 此类不能被继承。

public ref class FileIOPermission sealed : 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}")]
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
type FileIOPermission = class
    inherit CodeAccessPermission
    interface 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
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 的权限。 ReadWrite 表示前面所述的文件/文件夹权限。 创建权限后,代码需要权限来确定应用程序是否有权读取和写入文件。

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 中弃用。 如果使用与 CAS 相关的 API,最新版本的 .NET 不会遵循 CAS 注释,并会生成错误。 开发人员应寻求用于完成安全任务的替代方法。

此权限区分由 FileIOPermissionAccess提供的以下四种类型的文件 IO 访问:

  • Read:对文件内容的读取访问权限或对文件相关信息(例如其长度或上次修改时间)的访问权限。

  • Write:对文件内容的写入访问权限,或者对更改有关文件的信息(例如文件名称)的访问权限。 还允许删除和覆盖。

  • Append:仅写入文件末尾的功能。 无法读取。

  • PathDiscovery:访问路径本身中的信息。 这有助于保护路径中的敏感信息,例如用户名,以及路径中显示的有关目录结构的信息。 此值不授予对路径所指代的文件或文件夹的访问权限。

注意

授予 Write 对程序集的访问权限类似于授予其完全信任。 如果应用程序不应写入文件系统,则它不应具有 Write 访问权限。

所有这些权限都是独立的,这意味着对一个权限并不意味着对另一个的权限。 例如, Write 权限并不意味着对 ReadAppend的权限。 如果需要多个权限,可以使用按位 OR 组合这些权限,如下面的代码示例所示。 文件权限根据规范绝对路径进行定义;应始终使用规范文件路径进行调用。

FileIOPermission 介绍对文件和文件夹的受保护操作。 类 File 有助于提供对文件和文件夹的安全访问。 创建文件的句柄时,将执行安全访问检查。 通过在创建时执行检查,可将安全检查的性能影响降至最低。 打开文件会发生一次,而读取和写入可能会多次发生。 打开文件后,不再执行进一步检查。 如果将对象传递给不受信任的调用方,则可能会误用该对象。 例如,不应将文件句柄存储在具有较少权限的代码可以访问它们的公共全局静态中。

FileIOPermissionAccess 指定可以对文件或文件夹执行的操作。 此外,可以使用按位 OR 将这些操作组合在一起,以形成复杂的实例。

对文件夹的访问权限意味着可以访问其包含的所有文件,以及访问其子文件夹中的所有文件和文件夹。 例如, Read 对 C:\folder1\ 的访问意味着 Read 访问 C:\folder1\file1.txt、C:\folder1\folder2\、C:\folder1\folder2\file2.txt 等。

注意

在.NET Framework 4 之前的.NET Framework版本中,可以使用 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)
已过时.

创建一个权限,该权限是当前权限与指定权限的并集。

适用于

另请参阅