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 而且不允許程式碼執行。但是,如果程式碼已經取得這個使用權限,則會允許它執行。
請參閱
概念
參考
SecurityPermissionFlag.UnmanagedCode