كيفية القيام بما يلي: طلب إذن للوصول للتعليمات البرمجية الغير مُدارة
هام |
---|
في .NET Framework الإصدار 4، تم إزالة الدعم وقت التشغيل لطلبات الإذن RequestMinimum، و RequestOptional، و RequestRefuse.لا ينطبق هذا الموضوع على التعليمات البرمجية التي تعتمد على .NET Framework 4 أو أحدث.و للمزيد من المعلومات حول هذا والتغييرات الأخرى، راجع تغييرات الأمان في .NET Framework 4. |
يمكنك طلب الأذونات بسهولة عن طريق تطبيق السمات التي تمثل الأذونات التي تريد طلبها إلى مستوى التجميع للتعليمات البرمجية الخاصة بك. قد تختلف السمات التي تستخدمها، استناداً للأذونات التي تطلبها. تتم عملية التحويل البرمجي للطلبات في بيانات التعريف المتعلقة ببيان التجميع للتطبيق الخاص بك 1w45z383(v=vs.100).md ويتم تقييمها بواسطة بيئة وقت التشغيل عندما يتم تحميل التعليمات البرمجية الخاصة بك إلى الذاكرة أثناء التنفيذ.
يوضح المثال التالي كيفية طلب إذن الوصول إلى التعليمات البرمجية غير المُدارة. ملاحظة أنها تستخدم SecurityPermissionAttribute وتحدد قيمتين: القيمة SecurityAction و التي تحدد نوع طلب الإذن الذي يتم إجراؤه ( RequestMinimum، في هذه الحالة)، ثم علامة تشير إلى أي إذن يتم طلبه. في هذه الحالة، يحدد 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.
}
}
}
إذا لم تتلقى التعليمات البرمجية السابقة SecurityPermission بالعلامة UnmanagedCode، فستطرح بيئة وقت التشغيل إستثتاء PolicyException و لن يسمح للتعليمات البرمجية بالتنفيذ. ومع ذلك، إذا لم تتلقى التعليمات البرمجية ذلك الإذن، سيسمح لها بالتنفيذ.
راجع أيضًا:
المرجع
SecurityPermissionFlag.UnmanagedCode
المبادئ
لتوسيع بيانات التعريف باستخدام السمات