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 要求继承此类或重写某一方法的派生类已被授予了指定的权限。 
由 .NET Compact Framework 支持 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

请参见

参考

System.Security.Permissions 命名空间