다음을 통해 공유


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

중요

.NET Framework 버전 4에서 런타임 지원은 RequestMinimum, RequestOptionalRequestRefuse 권한 요청을 위해 제거되었습니다.이 항목은 .NET Framework 4 이상을 기반으로 하는 코드에 적용되지 않습니다.이 변경 내용 및 다른 변경 내용에 대한 자세한 내용은 .NET Framework 4의 보안 변경 내용을 참조하십시오.

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

다음 예제에서는 권한을 요청하여 비관리 코드에 액세스하는 방법을 보여 줍니다.이 예제에서는 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

개념

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

권한 요청

코드 액세스 보안

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