共用方式為


HOW TO:要求使用權限以存取 Unmanaged 程式碼

更新:2007 年 11 月

將表示使用權限的屬性套用至您程式碼內的組件等級,即可以輕易地要求使用權限。您可以使用的屬性因要求的使用權限而異。要求將被編譯入應用程式的組件資訊清單做為中繼資料,並在執行程式碼載入記憶體時由 Runtime 評估。

以下的範例將說明如何要求使用權限以存取 Unmanaged 程式碼。請注意,範例會使用 SecurityPermissionAttribute,而且會指定兩個值:一個是 SecurityAction 值,用來指定所要求的使用權限種類 (在本例中為 RequestMinimum),另一個是指出正在要求何種使用權限的旗標。在本例中,SecurityPermissionFlag.UnmanagedCode 指定了一個對 Unmanaged 程式碼使用權限的要求。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,Runtime 會擲回 PolicyException 而且不允許程式碼執行。但是,如果程式碼已經取得這個使用權限,則會允許它執行。

請參閱

概念

要求使用權限

參考

SecurityPermissionAttribute

SecurityAction

SecurityPermissionFlag.UnmanagedCode

其他資源

使用屬性擴充中繼資料

程式碼存取安全性

中繼資料和自我描述元件