عبد الله فتحي قام بنشر يناير 23, 2005 قام بنشر يناير 23, 2005 بسم الله الرحمن الرحيم مرفق مع هذه المشاركة موديول جاهز لتسهيل التعامل مع الريجستري، ورغم أنه من الأفضل أن تقوم بعمل أكوادك بنفسك إلا أنه ربما تواجه بعض الصعوبة في البداية، او ربما لا يكون لديك الوقت الكافي، أو ربما تعرف هذه الأكواد ولكنها تفتقر إلى التنظيم .. وفي كل الأحوال السابقة فإن هذا الموديول يعد خياراً سهلاً ومريحاً .. وفيما يلي سأشرح كيفية التعامل مع هذا الموديول: هذا الموديول يحتوي على 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
الردود الموصى بها