请求 XML 编码的权限

重要说明重要事项

在 .NET Framework 4 版中,已经为 RequestMinimumRequestOptionalRequestRefuse 权限请求移除运行时支持。本主题不适用于基于 .NET Framework 4 或更高版本的代码。有关此更改和其他更改的更多信息,请参见 .NET Framework 4 中的安全性更改

如果要请求自定义权限集(使用 RequestMinimumRequestOptionalRequestRefuse),则可以采用以下两种方式之一使用所需权限集的 XML 表示形式:既可以传递一个包含实际 XML 编码的权限集的字符串,也可以提供包含编码的权限集的 XML 文件的位置。 下面的示例使用带 PermissionSetAttribute 的 XML。 XML 标志是包含 XML 编码的权限集的字符串,在此例中它表示无限制的 UIPermission 和无限制的 RegistryPermission

示例

'The attribute is placed at the assembly level.
Imports System
Imports System.Runtime.InteropServices
Imports System.Security.Permissions
<assembly: PermissionSetAttribute(SecurityAction.RequestMinimum, XML := "<PermissionSet class=""System.Security.PermissionSet"" version=""1""><Permission class=""System.Security.Permissions.UIPermission, mscorlib"" version=""1""><AllWindows/></Permission><Permission class=""System.Security.Permissions.RegistryPermission, mscorlib"" version=""1""><Unrestricted/></Permission></PermissionSet>")>
Namespace MyNamespace
   Public Class MyClass1
      Public Sub New()
      End Sub

      Public Sub MyMethod()
         'Perform user interface operations here.
      End Sub
   End Class
End Namespace
//The attribute is placed at the assembly level.
using System.Security.Permissions;
[assembly:PermissionSetAttribute(SecurityAction.RequestMinimum, XML="<PermissionSet class=\"System.Security.PermissionSet\" version=\"1\"><Permission class=\"System.Security.Permissions.UIPermission, mscorlib\" version=\"1\"><AllWindows/></Permission><Permission class=\"System.Security.Permissions.RegistryPermission, mscorlib\" version=\"1\"><Unrestricted/></Permission></PermissionSet>")]
namespace MyNamespace 
{
   using System;
   using System.Runtime.InteropServices;
   public class MyClass 
   {
      public MyClass() 
      {
      }
      public void MyMethod() 
      {
        //Perform user interface operations here.
      }
   }
}

下面的示例通过提供包含同一 XML 编码的权限集的文件的位置和名称来说明对自定义权限集的请求。 如果未指定 XML 文件的位置,则运行时会在应用程序所在的目录中查找该文件。

Imports System
Imports System.Runtime.InteropServices
Imports System.Security.Permissions
'The attribute is placed at the assembly level.
<assembly: PermissionSetAttribute(SecurityAction.RequestMinimum, File := "pset.xml")>

Namespace MyNamespace
   Public Class MyClass1
      Public Sub New()
      End Sub 
      
      Public Sub MyMethod()
         'Perform operations that require permissions here.
      End Sub
   End Class
End Namespace
//The attribute is placed at the assembly level.
using System.Security.Permissions;
[assembly:PermissionSetAttribute(SecurityAction.RequestMinimum, File = "pset.xml")]
namespace MyNamespace 
{
   using System;
   using System.Runtime.InteropServices;
   
   public class MyClass 
   {
      public MyClass() 
      {
      }
      public void MyMethod() 
      {
          //Perform operations that require permissions here.
      }
   }
}

创建 XML 编码的权限集

可以创建权限集的 XML 编码,方法是:创建 PermissionSet 对象的一个实例,将所需权限的实例添加到该对象中,然后调用 ToXml 方法来返回一个表示 XML 编码的 SecurityElement 对象,或者调用 ToString 方法来返回 XML 编码的字符串表示形式。

请参见

参考

PermissionSetAttribute

PermissionSet

概念

请求权限

元数据和自描述组件

利用特性扩展元数据

代码访问安全性