delphi4arab منتديات دلفي للعرب
اكيف يمكنني جلب كل القيم الموجودة في مسار رجستري - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : اكيف يمكنني جلب كل القيم الموجودة في مسار رجستري (/showthread.php?tid=8652)



اكيف يمكنني جلب كل القيم الموجودة في مسار رجستري - mohamed49 - 01-05-2017

السلام عليكم 

كيف يمكنني جلب كل القيم الموجودة في مسار معين 
HKEY_LOCAL_MACHINE\SOFTWARE\Realtek\Network

يوجد داخل  Network
القيم التالية اريد جلبها الى memo
موجودة في الصورة 

والسلام عليكم


RE: التعامل مع الرجستري - seddik_xp - 01-05-2017

الكود التالي سيعمل معك إن شاء الله
كود :
var  Reg : TRegistry; begin   Reg := TRegistry.Create;   Try       Reg.RootKey := HKEY_LOCAL_MACHINE;       If Reg.OpenKeyReadOnly('\SOFTWARE\Realtek\Network\') Then       begin         Memo1.Clear;         Memo1.Lines.Add('Install: ' +Reg.ReadString('install'));         Memo1.Lines.Add('Reboot: ' +Reg.ReadString('reboot'));         Memo1.Lines.Add('Version: '+Reg.ReadString('version'));   end;  reg.CloseKey;   Finally     Reg.Free;   end; end;

كن حذر من مسار الرجيستري HKEY_LOCAL_MACHINE فهو يحتاج إلى صلاحيات الممسؤول للقراءة و الكتابة إليه.
لذلك وجب فتح الــ KEY للقراءة فقط Reg.OpenKeyReadOnly بدل إستخدام Reg.OpenKey التي لا تعمل إلا مع حساب المسؤول في حالة المسار HKEY_LOCAL_MACHINE .


RE: التعامل مع الرجستري - mohamed49 - 02-05-2017

بارك الله فيك اخي ليس هذا القصد انا لا اعرف ان كانت هذه القيم موجودة ام لا اريد ان اعرض كل ما بداخلها Network بحيث لو كانت هناك 1000 قيمة يجلبها كلها


والسلام عليكم

ثانيا الكود لم يجلب شيء بالرغم من تشغيل الدلفي كمسؤول لكن عند تغيير المسار الى HKEY_CURRENT_USER يعمل عادي

المهم الاصل هو جلب كل القيم الموجودة بدون معرفة اسماءها

تمام الحمد لله جربت هذا الكود ونجح r.GetValueNames(memo1.Lines); بقي قراءة ما بداخلها
ملاحظة الكود يعمل معي في user فقط جربت على مسار اخر وجلب القيم عادي في انتظار رد من احد الاخوة
والسلام عليكم

تمام حليت المشكلة عملت loop على العناصر واستخدمت readstring لقراءة القيم جزاكم الله خيرا بقي سؤال حول عدم عمل الكود الخاص بالاخ seddik_xp هل بسبب صلاحيات المسؤول مع اني شغلت الدلفي كمسؤول ولم يعمل

والسلام عليكم


RE: التعامل مع الرجستري - Agmcz - 02-05-2017

وعليكم السلام
هكذا
PHP كود :
uses
  Registry
;

procedure EnumNames(RootKey: HKEY; const Key: string; var Names: TStrings);
var
 
 Registry: TRegistry;
begin
  Registry 
:= TRegistry.Create;
 
 try
    Registry
.RootKey := RootKey;
 
   Registry.OpenKeyReadOnly(Key);
 
   Registry.GetValueNames(Names);
 
 finally
    Registry
.Free;
 
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 
 Names: TStrings;
begin
  Names 
:= TStringList.Create;
 
 try
    EnumNames
(HKEY_LOCAL_MACHINE, 'SOFTWARE\Realtek\Network', Names);
 
   Memo1.Lines := Names;
 
 finally
    Names
.Free;
 
 end;
end; 
تحصل على كل Value Name


RE: التعامل مع الرجستري - Agmcz - 03-05-2017

لم انتبه للردود الاخيرة
عموما بالتوفيق.


RE: التعامل مع الرجستري - mohamed49 - 05-05-2017

(03-05-2017, 08:38 PM)Agmcz كتب : لم انتبه للردود الاخيرة
عموما بالتوفيق.

جزاك الله كل خير اخي ممكن تلقي نظرة هنا بارك الله فيك
http://www.delphi4arab.net/forum/showthread.php?tid=8638