다음을 통해 공유


방법: 비관리 코드 액세스 권한 요청

업데이트: 2007년 11월

코드의 어셈블리 수준에 요청할 권한을 나타내는 특성 을 적용하여 권한을 쉽게 요청할 수 있습니다. 사용하는 특성은 요청하는 권한에 따라 달라질 수 있습니다. 요청은 실행 도중 메모리로 코드가 로드될때 응용 프로그램 의 어셈블리 매니페스트메타데이터로 컴파일되며 공용 언어 런타임에 의해 평가됩니다.

다음 예제에서는 권한을 요청하여 비관리 코드에 액세스하는 방법을 보여 줍니다. 이 예제에서는 SecurityPermissionAttribute를 사용하여 요청되는 권한의 종류(여기서는 RequestMinimum)를 지정하는 SecurityAction 값과 요청되는 권한을 나타내는 플래그를 지정합니다. 이 경우 SecurityPermissionFlag.UnmanagedCode는 비관리 코드 권한에 대한 요청을 지정합니다. assembly: 구문으로 컴파일러는 특성이 어셈블리 수준에 적용되고 있음을 알 수 있습니다.

예제

Imports System
Imports System.Security.Permissions
Imports System.Runtime.InteropServices
'The request is placed at the assembly level.
<assembly: SecurityPermissionAttribute(SecurityAction.RequestMinimum, Flags := SecurityPermissionFlag.UnmanagedCode)>

Namespace MyNamespace
   Public Class MyClass1
      Public Sub New()

      End Sub
       
      Public Sub MyMethod()
         'Perform interoperation with unmanaged code here.
      End Sub 
   End Class
End Namespace
//The request is placed at the assembly level.
using System.Security.Permissions;
[assembly:SecurityPermissionAttribute(SecurityAction.RequestMinimum, Flags = SecurityPermissionFlag.UnmanagedCode)]

namespace MyNamespace {
   using System;
   using System.Runtime.InteropServices;
   
   public class MyClass {
      public MyClass() {

      }
      public void MyMethod() {
        //Perform interoperation with unmanaged code here.
      }
   }
}

앞의 코드가 UnmanagedCode 플래그가 있는 SecurityPermission을 받지 않으면, 런타임에서 PolicyException을 throw하며 코드는 실행될 수 없습니다. 그러나 이 권한을 받으면 코드는 실행될 수 있습니다.

참고 항목

개념

권한 요청

참조

SecurityPermissionAttribute

SecurityAction

SecurityPermissionFlag.UnmanagedCode

기타 리소스

특성을 사용하여 메타데이터 확장

코드 액세스 보안

메타데이터 및 자동 기술 구성 요소