请求 XML 编码的权限
更新:2007 年 11 月
如果要请求自定义权限集(使用 RequestMinimum、RequestOptional 或 RequestRefuse),则可以采用以下两种方式之一使用所需权限集的 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 编码的字符串表示形式。