• السابق التالي







  • ابريل
    2
    التعامل مع الرجستري عن طريق C#.Net
    2010
    كتـب بـواسطة : مهند بندق , التصنيف : دروس في البرمجة , عدد المشاهدات (2389)

    السلام عليكم ورحمة الله وبركاته

    وصلتني رسالة من أحد الزوار الأحباء مستفسرا عن طريقة التعامل مع الرجستري عن طريق لغة C#   أتمنى أن يكون في هذا الدرس ما تبحث عنه , لا شك في أنك كمبرمج ستحتاج عاجلا أم آجلا التعامل مع ملفات الرجستي وتخزين قيم فيها وقراءتها عند الحاجة لذلك والتي في العادة ستحتاجها لحفظ خصائص البرنامج التي تقوم بتصميمه أو لاغراض أخرى ..

    في هذا الدرس سأوضح بأبسط ما يمكن طريقة التعامل مع ملفات أو مفاتيح الرجستري , من تكوينها و الوصول إليها إلى حذفها ..

    سنبدأ على بركة الله :

    للتعامل مع الرجستري عن طريق C# يجب عليك استدعاء مجال أسماء Microsoft.Win32 في أعلى الصفحة

    using Microsoft.Win32;

    للوصول إلى كائني Registry و RegistryKey حتى نتعامل بشكل بسيط مع أي ملف رجستري موجود على جهازنا .. وكما أن جميع قيم الرجستري مصنفة عن طريق مفاتيح لكل منها تسميتها و تخصصها .. فبتشغيل مربع Run عن طريق الضغط على Microsoft + R  في لوحة المفاتيح وكتابة أمر regedit سيظهر محرر الرجستري الخاص بالنظام, وستلاحظ تلك المفاتيح التي منها الرئيسية ومنها الفرعية .

     

    للوصول إلى المفاتيح الرئيسية عن طريق C# هو عن طريق الكائن Registry ثم Dot وكتابة اسم المفتاح ثم الوصول إلى الطرق و الخصائص الخاصة بالمفتاح المحدد .. وهذه الصورة توضيحية لإسم كل مفتاح في Dot Net Framework ..

     

    وعادة يتم تخزين القيم الخاصة بأي برنامج في المفتاح

    HKEY_LOCAL_MACHINE\SOFTWARE\My_Program_Name

    حيث My_Program_Name اسم برنامجنا HKEY_LOCAL_MACHINE هو Registry.LocalMachine في C# بعد أن عرفنا طريقة تصنيف المفاتيح و المكان الافتراضي لتخزين قيم برامجنا .. سنتطرق إلى التعامل معها , ولنبدأ بقراءة محتوى أي مفتاح من قيم ومفاتيح فرعية ..

    أولا لقراءة المفاتيح الفرعية لأي مفتاح من المفاتيح الأساسية.. ليس عليك سوى استدعاء الطريقة GetSubKeyNames وستقوم بدورها إعادة مصفوفة من نوع String لجميع أسامي المفاتيح الفرعية , فمثلا لمعرفة كل المفاتيح الموجودة في المفتاح الرئيسي LocalMachine نكتب الكود هكذا :

     

    string[] MySubKeyNames = Registry.LocalMachine.GetSubKeyNames();

    أو لقراءة المفاتيح الفرعية لأي مفتاح فرعي آخر نعرف كائن من نوع RegistryKey كما في الكود التالي:

    RegistryKey MyReg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft");

    string[] MySubKeyNames = MyReg.GetSubKeyNames();

     

    لقراءة جميع المفاتيح الفرعية للمفتاح الفرعي HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft ..

    ثانيا لقراءة المقيم الموجودة في أي مفتاح بواسطة الطريقة GetValueNames كسابقتها تعود بمصفوفة من نوع String فمثلا للاستعلام عن القيم الموجود في المفتاح

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\

    نستعمل هذا الكود

    RegistryKey MyReg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer");

    string[] MyValueNames = MyReg.GetValueNames();

    هكذا عرفنا طريقة الوصول إلى القيم و المفاتيح بشكل مبسط .. والآن نريد أن نقوم بتخزين قيم الرجستري الخاصة ببرنامجنا و قرائته متى احتجنا لذلك وحذفها أيضا عندما نريد الاستغناء عنها ..

    أولا لإنشاء قيمة خاصة بنا على المسار الخاص ببرنامجنا وهو

    HKEY_LOCAL_MACHINE\SOFTWARE\Mohaned_B_Regs

    حيث Mohaned_B_Regs اسم المفتاح الخاص ببرنامجنا وسيتم تكوينه تلقائيا عند انشاء القيمة المحتضنة داخل ذلك المفتاح .. وذلك بتعريف كائن من نوع RegistryKey ثم استدعاء طريقة SetValue مرسلين اسم القيمة و محتواها ونوعها , كما في الكود التالي

    RegistryKey MyReg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Mohaned_B_Regs");

    MyReg.SetValue(@"Mohaned_B_RegKey", "Mohaned_B_Value",RegistryValueKind.String);

    اسم القيمة هو Mohaned_B_RegKey و محتواها  Mohaned_B_Value  ونوعها   String ويمكنك إختيار أنواع أخرى

      وسنلاحظ فور تشغيلنا للبرنامج و تكوين القيمة, عند دخولنا إلى محرر الرجستري الخاص بالويندوز أن تم انشاء المفتاح وكذلك القيمة المحددة كما في الصورة التالية

     

    ثانيا قراءة القيمة التي قمنا بإنشائها بواسطة الطريقة CreateSubKey عند إنشاء الكائن و الطريقة SetValue عند تعيين القيمة .. سنقوم الآن باستعمال الطريقة OpenSubKey عند إنشاء الكائن و الطريقة GetValue بارسال اسم القيمة للاستعلام عن محتواها كما في الكود التالي:

    RegistryKey MyReg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Mohaned_B_Regs");

    string TheRegValue = MyReg.GetValue("Mohaned_B_RegKey").ToString();

     

    حيث TheRegValue المتغير الذي سيتم تخزين القيمة فيه ..

    ثالثا عملية الحذف هي شبيهة بعملية الإنشاء ولكن باستدعاء الطريقة DeleteValue مع إرسال اسم القيمة كما في الكود التالي:

    RegistryKey MyReg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Mohaned_B_Regs");

    MyReg.DeleteValue("Mohaned_B_RegKey");

    هكذا تعلمنا بشكل سريع كيفية التعامل مع ملفات الرجستري ونستطيع ان نستعملها في برنامجنا بحرية مطلقة كما نستطيع التفنن بشكل اكبر وصناعة محرر رجستري خاص بنا ..

    وهذا مثال بسيط مفتوح المصدر يحتوي على كل ما تعلمناه في هذا الدرس المختصر ..

     

    تحميل المثال من هنا

    في النهاية أتمنى لكم الاستفادة , ونلتقي بإذن الله في دروس أخرى ..

    تقبلوا مني أطيب التحيات ..

    مهند بندق..

     

     

     
    التعليقات (0)




           
    الإسم
    الدولة
    البريد الإلكتروني
    المحتوى  
    أكتب النص الظاهر في الصورة
     





    حقوق النشر محفوظة لـ مهند بندق © 2009 - 2019
    Programmed And Designed By : Mohaned Bondoq
    Copyright © 2009 - 2019