اكيف يمكنني جلب كل القيم الموجودة في مسار رجستري
#1
Question 
السلام عليكم 

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

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

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


الملفات المرفقة
.jpg   Sans titre.jpg (الحجم : 16.54 ك ب / التحميلات : 18)
الرد
#2
الكود التالي سيعمل معك إن شاء الله
كود :
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 .
[-] كل من 2 users say قال شكرا ل seddik_xp على المشاركة المفيدة
  • wadoud, mohamed49
الرد
#3
بارك الله فيك اخي ليس هذا القصد انا لا اعرف ان كانت هذه القيم موجودة ام لا اريد ان اعرض كل ما بداخلها Network بحيث لو كانت هناك 1000 قيمة يجلبها كلها


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

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

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

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

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

والسلام عليكم
الرد
#4
وعليكم السلام
هكذا
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
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 2 users say قال شكرا ل Agmcz على المشاركة المفيدة
  • wadoud, mohamed49
الرد
#5
لم انتبه للردود الاخيرة
عموما بالتوفيق.
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 1 user says قال شكرا ل Agmcz على المشاركة المفيدة
  • mohamed49
الرد
#6
(03-05-2017, 08:38 PM)Agmcz كتب : لم انتبه للردود الاخيرة
عموما بالتوفيق.

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


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم