كيفية جعل البرنامج دمؤقتا؟
#1
السلام عليكم و رحمة الله تعالى و بركاته
قمت بعمل برنامج على دالفي7 و اكملته و الحمد لله أريد طريقة لقفل البرنامج بعد شهر من يوم بداية عمله؟
جزاكم الله خيرا
مع السلامة
الرد
#2
و عليكم السلام و رحمة الله تعالى و بركاته
بامكانك استخدام مسجل النظام لتخزين قيمة فيه او تاريخ 
وكلما اشتغل البرنامج قراء قيمتها اذا كان التاريخ اكبر من تاريخ اليوم بي 30 يوم توقف
او زيادة واحد كل يوم حتى تصير القيمة 30 يتوقف
مع ملاحظة ان تاريخ الجهاز قد لا يكون مضبوطا ويتغير لهذا اللجؤ الى زيادة رقم كل يوم قد يكون افضل
او استخدم تاريخ من الانترنت

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

كود :
procedure TForm3.InsertToRegBtnClick(Sender: TObject); var   reg        : TRegistry;   openResult : Boolean;   today      : TDateTime; begin   reg := TRegistry.Create(KEY_READ);   reg.RootKey := HKEY_LOCAL_MACHINE;   if (not reg.KeyExists('Software\MyCompanyName\MyApplication\')) then     begin       MessageDlg('Key not found! Created now.',         mtInformation, mbOKCancel, 0);     end;   reg.Access := KEY_WRITE;   openResult := reg.OpenKey('Software\MyCompanyName\MyApplication\',True);   if not openResult = True then     begin       MessageDlg('Unable to create key! Exiting.',                   mtError, mbOKCancel, 0);       Exit();     end;   { Checking if the values exist and inserting when neccesary }   if not reg.KeyExists('Creation\ Date') then     begin       today := Now;   reg.WriteDateTime('Creation\ Date', today);     end;   if not reg.KeyExists('Licenced\ To') then     begin   reg.WriteString('Licenced\ To', 'MySurname\ MyFirstName');     end;   if not reg.KeyExists('App\ Location') then     begin   reg.WriteExpandString('App\ Location',                             '%PROGRAMFILES%\MyCompanyName\MyApplication\');     end;   if not reg.KeyExists('Projects\ Location') then     begin   reg.WriteExpandString('Projects\ Location',                             '%USERPROFILE%\MyApplication\Projects\');     end;   reg.CloseKey();   reg.Free; end; procedure TForm3.DeleteFromRegBtnClick(Sender: TObject); var   reg : TRegistry; begin   reg := TRegistry.Create(KEY_WRITE);   reg.RootKey := HKEY_LOCAL_MACHINE;   reg.DeleteKey('Software\MyCompanyName\MyApplication');   reg.DeleteKey('Software\MyCompanyName');   reg.CloseKey();   reg.Free; end;
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 2 users say قال شكرا ل Delphi4Us على المشاركة المفيدة
  • samnaj00, صالح حمادي
الرد
#3
و عليكم السلام
ولكن ألا تعد هذه العملية غير آمنه وسهلة لكسر البرنامج وجعله يعمل للأبد؟
ما هي أصعب طريقة يمكن إستعمالها للحماية؟
الرد
#4
(09-01-2021, 09:21 AM)momowahrane كتب : السلام عليكم و رحمة الله تعالى و بركاته
قمت بعمل برنامج على دالفي7 و اكملته و الحمد لله أريد طريقة لقفل البرنامج بعد شهر من يوم بداية عمله؟
جزاكم الله خيرا
مع السلامة

بارك الله فيك اخي العزيز سأجرب الكود على بركة الله
الرد
#5
السلام عليكم الطريقة السالفة الذكر عملية جدا لكن يمكن كسرها وذلك بمسح المفتاح شريطة أن يكون الإنسان داهية وبالذهاب مباشر إلى Regedit أو سجل المفاتيح والبحث المفتاح والتأكد منه إن كان هذا البرنامج مؤقتا Temporaire أو تجاري فعند عملية مسح المفتاح أو السجل يمكن إعادة تنشيط البرنامج والله أعلم .

البخل حرام هذا مجرد برنامج جربه علك تجد ظالتك فيه
var
Form1: TForm1;
comp:integer;
implementation

uses Unit2;

{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
Registre: TRegistry;
begin
///////ShowMessage('il n''éxiste pas des entrées dans cette Période');Exit;
Registre:=TRegistry.Create;
Registre.RootKey:=HKEY_CURRENT_USER;
Registre.OpenKey('Win7sys',False);
if not registre.ValueExists('compt') then
begin

Registre.OpenKey('\Win7sys',true);
comp:=1;
registre.WriteInteger('compt',comp);
end
else
begin
comp:=registre.ReadInteger('compt');
if comp <10 then begin
inc(comp);
registre.WriteInteger('compt',comp);
end
else
begin
winexec('c:\Temp.exe',sw_showdefault);
////ArabMessagedlg('ÝÊÑÉ ÊÌÑÈÉ ÇáÈÑäÇãÌ ÇäÊåÊ Úáíßã ÇáÅÊÕÇá ÈÕÇÍÈ ÇáÈÑäÇãÌ ',mtinformation,[mbok],0);
application.Terminate;
end;
end;
registre.CloseKey;
registre.Free;


end;

المثال الذي أرسلته تحدده فتر عشرة أيام if comp <10 then begin
عليك بتغيير عدد الأيــام وشكرا
[-] كل من 1 user says قال شكرا ل damoufid على المشاركة المفيدة
  • صالح حمادي
الرد


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


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