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=11200)



كيفية جعل البرنامج دمؤقتا؟ - momowahrane - 09-01-2021

السلام عليكم و رحمة الله تعالى و بركاته
قمت بعمل برنامج على دالفي7 و اكملته و الحمد لله أريد طريقة لقفل البرنامج بعد شهر من يوم بداية عمله؟
جزاكم الله خيرا
مع السلامة


RE: كيفية جعل البرنامج دمؤقتا؟ - Delphi4Us - 09-01-2021

و عليكم السلام و رحمة الله تعالى و بركاته
بامكانك استخدام مسجل النظام لتخزين قيمة فيه او تاريخ 
وكلما اشتغل البرنامج قراء قيمتها اذا كان التاريخ اكبر من تاريخ اليوم بي 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;



RE: كيفية جعل البرنامج دمؤقتا؟ - ALG2009 - 09-01-2021

و عليكم السلام
ولكن ألا تعد هذه العملية غير آمنه وسهلة لكسر البرنامج وجعله يعمل للأبد؟
ما هي أصعب طريقة يمكن إستعمالها للحماية؟


RE: كيفية جعل البرنامج دمؤقتا؟ - momowahrane - 09-01-2021

(09-01-2021, 09:21 AM)momowahrane كتب : السلام عليكم و رحمة الله تعالى و بركاته
قمت بعمل برنامج على دالفي7 و اكملته و الحمد لله أريد طريقة لقفل البرنامج بعد شهر من يوم بداية عمله؟
جزاكم الله خيرا
مع السلامة

بارك الله فيك اخي العزيز سأجرب الكود على بركة الله


RE: كيفية جعل البرنامج دمؤقتا؟ - damoufid - 05-04-2021

السلام عليكم الطريقة السالفة الذكر عملية جدا لكن يمكن كسرها وذلك بمسح المفتاح شريطة أن يكون الإنسان داهية وبالذهاب مباشر إلى 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
عليك بتغيير عدد الأيــام وشكرا