مشاركة عبر


كيفية القيام بما يلي: طلب إذن للوصول للتعليمات البرمجية الغير مُدارة

ملاحظة هامةهام

في .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 و لن يسمح للتعليمات البرمجية بالتنفيذ. ومع ذلك، إذا لم تتلقى التعليمات البرمجية ذلك الإذن، سيسمح لها بالتنفيذ.

راجع أيضًا:

المرجع

SecurityPermissionAttribute

SecurityAction

SecurityPermissionFlag.UnmanagedCode

المبادئ

لتوسيع بيانات التعريف باستخدام السمات

طلب الأذونات

أمان الوصول إلى التعليمات البرمجية

نظرة عامة حول بيانات التعريف