Запрос разрешений в XML-кодировке

Важное примечаниеВажно

В версии .NET Framework 4 удалена поддержка среды выполнения для принудительного применения запросов разрешений RequestMinimum, RequestOptional и RequestRefuse.Информация данного раздела не относятся к коду, основанному на .NET Framework 4 или более поздних версиях.Дополнительные сведения об этом и других изменениях см. в разделе Изменения системы безопасности в платформе .NET Framework 4.

При необходимости запросить пользовательский набор разрешений (используя RequestMinimum, RequestOptional или RequestRefuse), можно использовать XML-представление желаемого набора разрешений одним из двух способов: передавая строку, содержащую собственно закодированный в XML набор разрешений, или же предоставляя местоположение XML-файла, содержащего закодированный набор разрешений. В следующем примере используется XML с PermissionSetAttribute. Флаг 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, возвращающий объект SecurityElement, чтобы получить XML-представление, или вызвав метод ToString, возвращающий строковое представление XML-кодировки.

См. также

Ссылки

PermissionSetAttribute

PermissionSet

Основные понятия

Запрос разрешений

Метаданные и компоненты с самоописанием

Расширение метаданных с помощью атрибутов

Управление доступом для кода