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

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

مغلق
بدأه mo_zamzam في 14 فبراير 2006 · 9 رد · 975 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اولا

كتبت الكودفى برنامج بحيث يكتب فى الريجستر

فى المسار

SOFTWARE\Microsoft\Windows

المفتاح

mo

من النوع

dword value

بحيث تكون قيمه ال

data

2451547

ثانيا

كتبت فى البرنامج الكود فى الفورم الرئسى

     var
   reg:TRegistry;
begin
 reg.RootKey:= HKEY_LOCAL_MACHINE;
     try
     reg.OpenKey('SOFTWARE\Microsoft\Windows\',True) ;
if reg.ValueExists('mo') then
                     Application.Run
               else
                          showmessage('نسخه غير اصليه');
                        Application.Terminate;
end;

الخطا ان اذا كان الاسم موجود فى الريجستر يم غلق البرنامج ايضا

Application.Terminate

هل يوجد طريقه بحيث اذا كان الاسم موجود يفتح البرنامج واذا لم يكن موجود تظهر رساله ثم يغلق

و كيف يمكن التاكد من الاسم

mo

والقيمه

2451547

معا بحيث اذا لم يكن الاسم و القيمه هم نفسهم يتم ظهور الرساله وغلق البرنامج

ملحوظه البرنامج عباره عن فورم رئسى

و مجموعه من الفورمات الفرعيه التابعه )(الابن)(()

تم تعديل هذه المشاركة بواسطة romanof في 18 مارس 2006 في 05:39

#2

اخي الكريم كتبت انت

if reg.ValueExists('mo') then

Application.Run

لماذا الشطر الثاني؟؟ اذاكان البرنامج غير اصلي فستعمل انهاء للبرنامج والا فالبرنامج شغال بطبيعة الحال

يجب وضع بيجن واند بعد الالس

اي يصبح البرنامج:

var
  reg:TRegistry;
begin
  reg.RootKey:= HKEY_LOCAL_MACHINE;
  try
    reg.OpenKey('\SOFTWARE\Microsoft\Windows',True);
    if reg.ValueExists('mo') then
      if reg.ReadInteger('mo')<> 2451547 then
      begin
       showmessage('نسخه غير اصليه');
       reg.Free;
       halt;
     end;
  finally
    reg.Free;
  end;
end;
#3

نسيت انه ممكن البرنامج يعمل عليه الجست وبالتالي توجد مواضع بالرجستري لا يمكن للجست الدخول لها الال للقراءة فقط اي يجب ان تكتب السطر التالي

reg.OpenKeyreadonly('\SOFTWARE\Microsoft\Windows');

بدل السطر

reg.OpenKey('\SOFTWARE\Microsoft\Windows',True);

حتى لا يتولد خطا ينتج عنه تخطي رسالة الخطأ وانهاء البرنامج

#4

ممكن ياخ essam7

ان تشرح ما المقصود

نسيت انه ممكن البرنامج يعمل عليه الجست وبالتالي توجد مواضع بالرجستري لا يمكن للجست الدخول لها الال للقراءة فقط

#5

البرنامج يفتح دون التاكد من وجود

if reg.ValueExists('mo') then

if reg.ReadInteger('mo')<> 2451547 then

ما العمل حتى لا يفتح البرنامج

اذا لو تكن mo ,2451547

غير موجوده

#6

المقصود بالجست مستخدم محدود

Limited

أى انه ليس مدير

Administrator

#7

السلام عليكم

var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  try
    if reg.OpenKeyreadonly('\SOFTWARE\Microsoft\Windows') then
    begin
      if (reg.ValueExists('mo')) and (reg.ReadInteger('mo') <> 2451547) then
        begin
          showmessage('äÓÎå ÛíÑ ÇÕáíå');
          reg.Free;
          Halt;
        end;
    end;
  finally
    reg.Free;
  end;

وبالتوفيق ;)

#8

شكر يا استاذى على الرد لكن المشكله انه

فى حاله عدم وجود 'mo' لا يتتحقق الشرط

if (reg.ValueExists('mo')) and (reg.ReadInteger('mo') <> 2451547) then

و يقتح البرنامج بدون مشكله او ظهور اى رساله

اما اذا كان 'mo' موجود منقبل يتحقق الشرط

if (reg.ValueExists('mo')) and (reg.ReadInteger('mo') <> 2451547) then

كيف يتم تحقيق الشرط فى كل الاحوال فى عدم وجود 'mo' او وجودها

#9

السلام عليكم

إذا كانت Mo غير موجودة هذا يعني أن النسخة غير أصلية

وإذا كانت موجودة وقيمتها لا تساوي 2451547 فهي أيضاً غير أصلية.

أعتقد الآن التحليل منطقي:

var
 reg: TRegistry;
begin
 reg := TRegistry.Create;
 reg.RootKey := HKEY_LOCAL_MACHINE;
 try
   if reg.OpenKeyreadonly('\SOFTWARE\Microsoft\Windows') then
   begin
     if not(reg.ValueExists('mo')) then
	begin
   showmessage('نسخة غير أصلية');
   reg.free;
   halt;
	end
     else if reg.ReadInteger('mo') <> 2451547 then
       begin
         showmessage('نسخة غير أصلية');
         reg.Free;
         Halt;
       end;
   end;
 finally
   reg.Free;
 end;

وبالتوفيق ;)

#10

شكراااااااااااااا

فعلا التحليل منطقى

مكن اضافه

if not(reg.ValueExists('mo5')) then

و

if reg.ReadInteger('mo5') <> 1234 then

تظهر showmessage

هذة نسخه للعرض فقط

ثم يفتح البرنامج

وعند غلق البرنامج يتم حذف المفتاح 'mo5'

من الريجستر

بحث فى المره الاخرى عند فتح البرنامج تظهر

showmessage('نسخة غير أصلية');

هذا الموضوع مغلق.

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