اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

ريجستري - كيفية التعامل مع الـ Registry


الردود الموصى بها

بسم الله الرحمن الرحيم

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

وفيما يلي سأشرح كيفية التعامل مع هذا الموديول:

هذا الموديول يحتوي على 14 (أربعة عشر) وظيفة، هي إجمالاً:

CreateRegKey

DelRegKey

SaveRegString

GetRegString

SaveRegLong

GetRegLong

SaveRegByte

GetRegByte

DelRegValue

CopyRegByte

CopyRegString

CopyRegLong

GetRegSubKeyList

RegistryEnumerateValues

وفيما يلي شرحها بالتفصيل، ويجب أن تكون على معرفة ولو بسيطة بالريجستري حتى تستطيع فهم المصطلحات التي سنذكرها، وإذا لم يكن لديك أي خلفية سابقة عن الريجستري فيفضل إلقاء نظرة بسيطة على الدروس في الرابط التالي:

تعلم الريجستري

والآن لنبدأ:

1. الوظيفة: CreateRegKey

البناء: (CreateRegKey(hKey,strpath

وتقوم بإنشاء مفتاح جديد، وستحتاج هذه الوظيفة إلى تمرير قيمتين الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد إنشاءه ..

مثال: ("x = CreateRegKey(HKEY_CURRENT_CONFIG, "Officena\visualbasic

المثال السابق سيقوم بإنشاء مفتاح فرعي باسم visualbasic في المسار التالي HKEY_CURRENT_CONFIG\Officena ولكن ماذا لو أن المسار السابق غير موجود هنا سيقوم الفيجول بيسيك بإنشائه أيضاً ..

2. الوظيفة: DelRegKey

البناء: (DelRegKey(hKey,strpath

على عكس الوظيفة السابقة فهي تقوم بحذف مفتاح موجود بالفعل، وستحتاج هذه الوظيفة أيضاً إلى تمرير قيمتين الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد حذفه ..

مثال: ("x = DelRegKey(HKEY_CURRENT_CONFIG, "Officena\visualbasic

المثال السابق سيقوم بحذف المفتاح الفرعي visualbasic الموجود في المسار التالي HKEY_CURRENT_CONFIG\Officena، وإذا تمت عملية الحذف بنجاح فإن المتغير X سيحمل القيمة (0)، أما إذا لم تتم العملية إما لعدم وجود المفتاح من الأساس أو لأي سبب آخر فإن المتغير X سيعود بالقيمة (2) ..

3. الوظيفة: SaveRegString

البناء: (SaveRegString(hKey,strpath,strvalue,strdata

تقوم هذه الوظيفة بإنشاء مدخل قيمة جديد من نوع String value، وللذين يجدون صعوبة في فهم هذه المصطلحات أذكرهم بالرابط السابق لدروس الريجستري، وستحتاج هذه الوظيفة إلى تمرير أربع قيم الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد إضافة مدخل قيمة بداخله، والثالثة strvalue وتعني اسم مدخل القيمة الذي نريد إنشاءه، والرابعة strdata وتعني قيمة هذا المدخل الذي سننشئه ..

مثال: ("x = SaveRegString(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code1", "connection to internet

المثال السابق سيقوم بإنشاء مدخل قيمة من نوع string value ويحمل الاسم code1 في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic، وهذا المدخل ستكون قيمته connection to inernet ..

وعلى فكرة من الجيد فتح الريجستري لمعرفة هل تمت التغييرات بنجاح أم لا، ومن المهم أن تكون حذراً أيضاً في هذا الجانب، لأن أي خطأ من الممكن أن يكلفك الكثير ...

4. الوظيفة: GetRegString

البناء: ([GetRegString(hKey,strpath,strvalue,[Default

تقوم هذه الوظيفة بمعرفة قيمة مدخل قيمة من نوع string value موجود مسبقاً، أي أننا نريد معرفة ماهي قيمته، وستحتاج هذه الوظيفة إلى تمرير أربع قيم ثلاثة منها إجبارية والأخير اختياري، الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد معرفة قيمة مدخل القيمة الموجود بداخله، والثالثة strvalue وتعني اسم مدخل القيمة الذي نريد معرفة قيمته، والرابعة [default] وكما ترى فهو موضوع بين أقواس معقوفة للدلالة على أنها قيمة اختيارية أي يمكن تجاهلها، وهنا نضع قيمة افتراضية تظهر لنا في حال لم يكن مدخل القيمة الذي نبحث عن قيمته موجوداً ..

مثال: ("x = GetRegString(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code1", "none

المثال السابق سيقوم بمعرفة قيمة المدخل من نوع string value والذي يحمل الاسم code1 والموجود في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic، ويضع هذه القيمة في المتغيير X، أما إذا لم يجد هذا المدخل فسيقوم بجعل المتغير X يساوي none .. أرجو أن تكون الأمور واضحة حتى الآن ..

5. الوظيفة: SaveRegLong

البناء: (SaveRegLong(hKey,strpath,strvalue,strdata

تقوم هذه الوظيفة بإنشاء مدخل قيمة جديد من نوع DWORD value، وستحتاج هذه الوظيفة إلى تمرير أربع قيم الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد إضافة مدخل قيمة بداخله، والثالثة strvalue وتعني اسم مدخل القيمة الذي نريد إنشاءه، والرابعة strdata وتعني قيمة هذا المدخل الذي سننشئه ..

مثال: (x = SaveRegLong(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code2", 123

المثال السابق سيقوم بإنشاء مدخل قيمة من نوع DWORD value ويحمل الاسم code2 في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic، وهذا المدخل ستكون قيمته 123 ..

6. الوظيفة: GetRegLong

البناء: ([GetRegLong(hKey,strpath,strvalue,[Default

تقوم هذه الوظيفة بمعرفة قيمة مدخل قيمة من نوع DWORD value موجود مسبقاً، أي أننا نريد معرفة ماهي قيمته، وستحتاج هذه الوظيفة إلى تمرير أربع قيم ثلاثة منها إجبارية والأخير اختياري، الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد معرفة قيمة مدخل القيمة الموجود بداخله، والثالثة strvalue وتعني اسم مدخل القيمة الذي نريد معرفة قيمته، والرابعة [default] وكما ترى فهو موضوع بين أقواس معقوفة للدلالة على أنها قيمة اختيارية أي يمكن تجاهلها، وهنا نضع قيمة افتراضية تظهر لنا في حال لم يكن مدخل القيمة الذي نبحث عن قيمته موجوداً ..

مثال: (x = GetRegLong(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code2", 111

المثال السابق سيقوم بمعرفة قيمة المدخل من نوع DWORD value والذي يحمل الاسم code2 والموجود في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic، ويضع هذه القيمة في المتغيير X، أما إذا لم يجد هذا المدخل فسيقوم بجعل المتغير X يساوي (111) ..

7. الوظيفة: SaveRegByte

البناء: (SaveRegByte(hKey,strpath,strvalue,strdata

تقوم هذه الوظيفة بإنشاء مدخل قيمة جديد من نوع Binary value، وستحتاج هذه الوظيفة إلى تمرير أربع قيم الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد إضافة مدخل قيمة بداخله، والثالثة strvalue وتعني اسم مدخل القيمة الذي نريد إنشاءه، والرابعة strdata وتعني قيمة هذا المدخل الذي سننشئه ..

مثال: (x = SaveRegByte(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code3", 33

المثال السابق سيقوم بإنشاء مدخل قيمة من نوع Binary value ويحمل الاسم code3 في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic، وهذا المدخل ستكون قيمته 33 ..

8. الوظيفة: GetRegByte

البناء: ([GetRegByte(hKey,strpath,strvalue,[Default

تقوم هذه الوظيفة بمعرفة قيمة مدخل قيمة من نوع Binary value موجود مسبقاً، أي أننا نريد معرفة ماهي قيمته، وستحتاج هذه الوظيفة إلى تمرير أربع قيم ثلاثة منها إجبارية والأخير اختياري، الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد معرفة قيمة مدخل القيمة الموجود بداخله، والثالثة strvalue وتعني اسم مدخل القيمة الذي نريد معرفة قيمته، والرابعة [default] وكما ترى فهو موضوع بين أقواس معقوفة للدلالة على أنها قيمة اختيارية أي يمكن تجاهلها، وهنا نضع قيمة افتراضية تظهر لنا في حال لم يكن مدخل القيمة الذي نبحث عن قيمته موجوداً ..

مثال: (x = GetRegByte(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code3", 11

المثال السابق سيقوم بمعرفة قيمة المدخل من نوع Binary value والذي يحمل الاسم code3 والموجود في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic، ويضع هذه القيمة في المتغيير X، أما إذا لم يجد هذا المدخل فسيقوم بجعل المتغير X يساوي 11 ..

9. الوظيفة: DelRegValue

البناء: (DelRegKey(hKey,strpath,strvalue

هذه الوظيفة تقوم بحذف مدخل قيمة موجود بالفعل بغض النظر عن نوعه، وستحتاج هذه الوظيفة إلى تمرير ثلاث قيم الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي يحتوي على مدخل القيمة نريد حذفه، والثالثة strvalue وتعني مدخل القيمة الذي نريد حذفه ..

مثال: ("x = DelRegValue(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code1

المثال السابق سيقوم بحذف مدخل القيمة code1 الموجود في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic ..

10. الوظيفة: GetRegSubKeyList

البناء: (GetRegSubKeyList(hKey,strpath

وتقوم هذه الوظيفة بإعطائنا المفاتيح الفرعية داخل مفتاح معين، وتحتاج هذه الوظيفة إلى تمرير قيمتين الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد معرفة المفاتيح الفرعية بداخله ويمكن تمرير قيمة فارغة وهنا سيتم عرض المفاتيح الفرعية داخل المفتاح الرئيسي ..

تقوم هذه الوظيفة بإعادة المفاتيح الفرعية على شكل مصفوفة في متغير من نوع Variant ..

يمكننا بعد ذلك أن نقوم بعرض هذه المصفوفة في مربع قائمة List Box .. وبالمثال يتضح المقال:

مثال:

XGroup = GetRegSubKeyList(HKEY_LOCAL_MACHINE, "SOFTWARE")
For Each XElemens In XGroup
List1.AddItem XElemens
Next
المثال السابق يقوم بتجميع المفاتيح الفرعية الموجودة تحت المسار HKEY_LOCAL_MACHINE\SOFTWARE ويقوم بوضعها في المتغير XGroup ثم بعد ذلك يقوم بعرضها في مربع القائمة List1 .. 11. الوظيفة : RegistryEnumerateValues البناء: RegistryEnumerateValues eRootKey, strKeyName, astrValues(), lngValueCount تقوم هذه الوظيفة بإعطائنا مدخلات القيم الموجودة تحت أي مفتاح نريده، وتحتاج هذه الوظيفة إلى تمرير أربع قيم، الأولى eRootKey وتعني المفتاح الرئيسي، والثانية strKeyName وتعني المسار للمفتاح الفرعي الذي نريد معرفة مدخلات القيم بداخله، والثالثة astrValues() وهو مصفوفة من نوع نص، ولابد أن تكون معرفة مسبقاً، وفائدتها أنه سيتم إرجاع مدخلات القيم بها، والرابعة lngValueCount وهو متغير رقمي، وفائدته أنه سيحتوي على عدد مدخلات القيم الموجودة بالمفتاح .. يمكننا بعد ذلك أن نقوم بعرض المصفوفة التي تحصلنا عليها في مربع قائمة List Box .. وإليك المثال: مثال:
Dim astrValues() As String
Dim lngValueCount As Long
RegistryEnumerateValues HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Run", astrValues(), lngValueCount
If Not lngValueCount = 0 Then
For Each XElemens In astrValues
List1.AddItem XElemens
Next
Else
MsgBox "المسار الذي حددته لا يحتوي على أي مدخلات قيم"
End If

المثال السابق يقوم بتجميع مدخلات القيم في مصفوفة ومن ثم عرضها في مربع قائمة List Box، وفي حال كون المسار لا يحتوي على مدخلات قيم فإنه يقوم بإظهار رسالة تخبر بذلك ..

يكفي أن نعرف الوظائف السابقة لكي نتمكن من التعامل مع الريجستري أما الوظائف الباقية وهي:

12. الوظيفة: CopyRegByte

13. الوظيفة: CopyRegString

14. الوظيفة: CopyRegLong

فهي تقوم بنسخ مدخل القيمة من مكان لآخر، وإذا أردتم أن أشرحها فأنا جاهز لذلك ..

في الختام تحياتي الخالصة لكم جميعاً .. وفي حال وجود صعوبات في فهم هذا الموديول بإمكانكم السؤال في هذا الموضوع وستجدون الحل بإذن الله ..

وإلى مزيد من التقدم ..

ModRegistry.zip

رابط هذا التعليق
شارك

زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information