الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

البحث عن key أو value في الروجيستري بواسطة كود جافا

بدأه meddevlopper في 2 أغسطس 2012 · 4 رد · 584 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته أما بعد فهذا أول مشاركة لي في هذا المنتدى اتمنى ألا اكون قد خالفت قوانين المنتدى

في الحقيقة انا لست مبتدئ في الجافا ولا محترف يعني مستواي متوسط المهم المشكل التي تؤرقني هي كيفية البحث في الروجيستري عن key أو value وتعديله

مثلا أريد البحث عن اسم اصدار الويندوز ProductName وهو عبارة عن Valeur Chaine ومكتوب فيه Microsoft Windows XP

هذا ال value أو Valeur Chaine هو موجود في المسار "HKEY_LOCAL_MACHINE SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"

لنفرض مثلا أنني لا أعرف مساره هل علي البحث في جميع الروجيستري عن هذا ال value او غيره

وجدت الكثير من الكلاسات التي تتعامل مع الروجيستري وأفضلها هو WinRegistry عبر هذا الرابط http://stackoverflow.com/questions/62289/read-write-to-windows-registry-using-java

لكن هذا class يمكن فقط من انشاء قيم value أو key لكنه لا يتيح امكانية البحث عن value معين

ملاحظة مهمة عند البحث عن value معين يجب أن يعطي البرنامج المسار مكتوبا وليس أن يشغل regedit عن طريق Runnable

تقبلو تحياتي

#2

هذا المسار موجود في ويندوز 7 ايضاً، فهو معلوم وبالتالي يمكنك الوصول اليه مباشره،، لا حاجة للبحث بهذا الشكل فربما تجد اسم القيمة موجود لبرنامج ثاني وبالتالي تحصل على قيمة خطأ,

اذا اردت ان تقوم بعمل بحث في المفاتيح فعليك باستخدام اي مكتبة خارجية توفر ذلك، او استخدم JNI مباشره،

او ان تقوم بكتابه بريمج صغير كونسول بسي++ يقوم بهذه المهمه ومن ثم نتفذه من برنامجك الجافا وتحصل على الناتج،، بالطبع هذه البرنامج يجب ان يكون بجوار برنامجك او ان يكون في مسار معلوم لك.

اذا اردت فقط الحصول على اسم النظام فيمكنك استخدام :

String name = System.getProperty("os.name")

بالتوفيق،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#3

انظر هذا الرابط قد يفيدك فى معرفه الكثير عن خصائص النظام , وخصائص بيئة التشغيل

/index.php?showtopic=232488&view=findpost&p=1154486

Software Developer
Mahmoudkelany.com


 

#4
Wajdy Essam كتب:

هذا المسار موجود في ويندوز 7 ايضاً، فهو معلوم وبالتالي يمكنك الوصول اليه مباشره،، لا حاجة للبحث بهذا الشكل فربما تجد اسم القيمة موجود لبرنامج ثاني وبالتالي تحصل على قيمة خطأ,

اذا اردت ان تقوم بعمل بحث في المفاتيح فعليك باستخدام اي مكتبة خارجية توفر ذلك، او استخدم JNI مباشره،

او ان تقوم بكتابه بريمج صغير كونسول بسي++ يقوم بهذه المهمه ومن ثم نتفذه من برنامجك الجافا وتحصل على الناتج،، بالطبع هذه البرنامج يجب ان يكون بجوار برنامجك او ان يكون في مسار معلوم لك.

اذا اردت فقط الحصول على اسم النظام فيمكنك استخدام :

String name = System.getProperty("os.name")

بالتوفيق،

على العموم شكرا جزيلا لك

قلت يجب كتابه بريمج صغير كونسول بسي++ أفهم من كلامك أنه أنه لا يمكن انجاز هذا البرنامج بالجافا!!!

و كيف يمكنني كتابة بريمج صغير كونسول بسي++ وأنا لا أعرف الا الجافا واذا كان بامكان أحد المساعدة فلا يبخل علينا

#5

التعامل مع الWindows Registry يتطلب دوال خاصه لذلك وهي مكتوبة بسي++، في جافا اذا اردت استدعاء كود سي++ عليك باستخدام JNI فقرأ عنها وسوف تحل مشكلتك..

الحل الأخر ان تستخدم اي مكتبة تقوم بذلك العمل وفقط تستدعي الدالة وتنسى كل ما يتعلق ب JNI ، مثلاً:

http://www.trustice.com/java/jnireg/

http://www.ehow.com/how_6048581_access-windows-registry-java.html

الحل الذي ذكرته هو ان تكتب برنامج بسي++ يستخدم هذه الدوال هو حل ايضاً، وقم بمناداة البرنامج في جافا،، كثير من الأحيان لا يصعب فعل كل شيء بجافا خصوصاً ما يتعلق بالتعامل مع النظام Internal Windows ومن الأسهل عملها بلغه سي++.

الى الان لم نفهم لماذا تريد عمل Enumeration للقيم في الRegistry وأنت تعرف مسار القيمة ، فلماذا التعب؟

بالتوفيق،

1

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…