SecurityAction 枚举
指定可以使用声明安全性执行的安全操作。
**命名空间:**System.Security.Permissions
**程序集:**mscorlib(在 mscorlib.dll 中)
语法
声明
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration SecurityAction
用法
Dim instance As SecurityAction
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum SecurityAction
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum class SecurityAction
/** @attribute SerializableAttribute() */
/** @attribute ComVisibleAttribute(true) */
public enum SecurityAction
SerializableAttribute
ComVisibleAttribute(true)
public enum SecurityAction
成员
成员名称 | 说明 | |
---|---|---|
Assert | 即使堆栈中的高级调用方未被授予访问当前权限对象所标识资源的权限,调用代码仍能访问该资源(请参见 使用 Assert 方法)。 | |
Demand | 要求调用堆栈中的所有高级调用方都已被授予了当前权限对象所指定的权限(请参见 安全要求)。 | |
Deny | 即使调用方已被授予访问当前权限对象所指定资源的权限,调用方访问该资源的能力仍被拒绝(请参见 使用 Deny 方法)。 | |
InheritanceDemand | 要求继承此类或重写某一方法的派生类已被授予了指定的权限。 | |
LinkDemand | 要求直接调用方已被授予了指定的权限。
有关声明性安全和链接要求的更多信息,请参见 用于类和成员范围的声明式安全。 |
|
PermitOnly | 即使代码已被授予访问其他资源的权限,也只能访问此权限对象所指定的资源(请参见 使用 PermitOnly 方法)。 | |
RequestMinimum | 请求使代码运行所需的最小权限。此操作只能在程序集范围内使用。 | |
RequestOptional | 请求可选的附加权限(并非运行所必需的权限)。此请求隐式拒绝未明确请求的所有其他权限。此操作只能在程序集范围内使用。 | |
RequestRefuse | 请求不将可能被误用的权限授予调用代码。此操作只能在程序集范围内使用。 |
备注
下表描述了每一个安全操作发生的时间以及支持的目标。
声明安全操作 |
操作时间 |
支持的目标 |
---|---|---|
LinkDemand |
实时编译 |
类,方法 |
InheritanceDemand |
加载时间 |
类,方法 |
Demand |
运行时 |
类,方法 |
Assert |
运行时 |
类,方法 |
Deny |
运行时 |
类,方法 |
PermitOnly |
运行时 |
类,方法 |
RequestMinimum |
授予时间 |
程序集 |
RequestOptional |
授予时间 |
程序集 |
RequestRefuse |
授予时间 |
程序集 |
有关属性目标的附加信息,请参见 Attribute。
主题 | 位置 |
---|---|
如何:通过使用 RequestRefuse 标志拒绝授予权限 | .NET Framework:安全性 |
如何:通过使用 RequestOptional 标志请求可选权限 | .NET Framework:安全性 |
如何:通过使用 RequestMinimum 标志请求最小权限 | .NET Framework:安全性 |
如何:通过使用 RequestOptional 标志请求可选权限 | .NET Framework:安全性 |
如何:通过使用 RequestRefuse 标志拒绝授予权限 | .NET Framework:安全性 |
如何:通过使用 RequestMinimum 标志请求最小权限 | .NET Framework:安全性 |
示例
此示例演示如何通知 CLR 此程序集中的代码需要 IsolatedStoragePermission,还演示如何对独立存储进行读写。
using System;
using System.Security.Permissions;
using System.IO.IsolatedStorage;
using System.IO;
// Notify the CLR to grant this assembly the IsolatedStorageFilePermission.
// This allows the assembly to work with storage files that are isolated
// by user and assembly.
[assembly: IsolatedStorageFilePermission(SecurityAction.RequestMinimum, UsageAllowed = IsolatedStorageContainment.AssemblyIsolationByUser)]
public sealed class App
{
static void Main()
{
// Attempt to create a storage file that is isolated by user and assembly.
// IsolatedStorageFilePermission granted to the attribute at the top of this file
// allows CLR to load this assembly and execution of this statement.
using (Stream s = new IsolatedStorageFileStream("AssemblyData", FileMode.Create, IsolatedStorageFile.GetUserStoreForAssembly()))
{
// Write some data out to the isolated file.
using (StreamWriter sw = new StreamWriter(s))
{
sw.Write("This is some test data.");
}
}
// Attempt to open the file that was previously created.
using (Stream s = new IsolatedStorageFileStream("AssemblyData", FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly()))
{
// Read the data from the file and display it.
using (StreamReader sr = new StreamReader(s))
{
Console.WriteLine(sr.ReadLine());
}
}
}
}
// This code produces the following output.
//
// Some test data.
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::IO::IsolatedStorage;
using namespace System::IO;
// Notify the CLR to grant this assembly the IsolatedStorage-
// FilePermission. This allows the assembly to work with storage
// files that are isolated by user and assembly.
[assembly: IsolatedStorageFilePermission(
SecurityAction::RequestMinimum, UsageAllowed =
IsolatedStorageContainment::AssemblyIsolationByUser)];
int main()
{
try
{
// Attempt to create a storage file that is isolated by
// user and assembly. IsolatedStorageFilePermission
// granted to the attribute at the top of this file
// allows CLR to load this assembly and execution of this
// statement.
Stream^ fileCreateStream = gcnew
IsolatedStorageFileStream(
"AssemblyData",
FileMode::Create,
IsolatedStorageFile::GetUserStoreForAssembly());
StreamWriter^ streamWriter = gcnew StreamWriter(
fileCreateStream);
try
{
// Write some data out to the isolated file.
streamWriter->Write("This is some test data.");
streamWriter->Close();
}
finally
{
delete fileCreateStream;
delete streamWriter;
}
}
catch (IOException^ ex)
{
Console::WriteLine(ex->Message);
}
try
{
Stream^ fileOpenStream =
gcnew IsolatedStorageFileStream(
"AssemblyData",
FileMode::Open,
IsolatedStorageFile::GetUserStoreForAssembly());
// Attempt to open the file that was previously created.
StreamReader^ streamReader = gcnew StreamReader(
fileOpenStream);
try
{
// Read the data from the file and display it.
Console::WriteLine(streamReader->ReadLine());
streamReader->Close();
}
finally
{
delete fileOpenStream;
delete streamReader;
}
}
catch (FileNotFoundException^ ex)
{
Console::WriteLine(ex->Message);
}
catch (IOException^ ex)
{
Console::WriteLine(ex->Message);
}
}
// This code produces the following output.
//
// This is some test data.
平台
Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
版本信息
.NET Framework
受以下版本支持:2.0、1.1、1.0
.NET Compact Framework
受以下版本支持:2.0