المشاركات : 10
المواضيع 4
:
: 0
الإنتساب : Jan 2020
السلام عليكم و رحمة الله تعالى و بركاته
قمت بعمل برنامج على دالفي7 و اكملته و الحمد لله أريد طريقة لقفل البرنامج بعد شهر من يوم بداية عمله؟
جزاكم الله خيرا
مع السلامة
المشاركات : 1,677
المواضيع 349
:
: 1,069
الإنتساب : Nov 2013
09-01-2021, 12:01 PM
(آخر تعديل لهذه المشاركة: 09-01-2021, 12:02 PM بواسطة Delphi4Us.)
و عليكم السلام و رحمة الله تعالى و بركاته
بامكانك استخدام مسجل النظام لتخزين قيمة فيه او تاريخ
وكلما اشتغل البرنامج قراء قيمتها اذا كان التاريخ اكبر من تاريخ اليوم بي 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;
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
المشاركات : 421
المواضيع 77
:
: 195
الإنتساب : Dec 2008
09-01-2021, 04:11 PM
(آخر تعديل لهذه المشاركة: 09-01-2021, 04:23 PM بواسطة Delphi4Us.)
و عليكم السلام
ولكن ألا تعد هذه العملية غير آمنه وسهلة لكسر البرنامج وجعله يعمل للأبد؟
ما هي أصعب طريقة يمكن إستعمالها للحماية؟
المشاركات : 10
المواضيع 4
:
: 0
الإنتساب : Jan 2020
(09-01-2021, 09:21 AM)momowahrane كتب : السلام عليكم و رحمة الله تعالى و بركاته
قمت بعمل برنامج على دالفي7 و اكملته و الحمد لله أريد طريقة لقفل البرنامج بعد شهر من يوم بداية عمله؟
جزاكم الله خيرا
مع السلامة
بارك الله فيك اخي العزيز سأجرب الكود على بركة الله
المشاركات : 15
المواضيع 2
:
: 0
الإنتساب : Jan 2021
05-04-2021, 05:44 PM
(آخر تعديل لهذه المشاركة: 05-04-2021, 05:50 PM بواسطة damoufid.)
السلام عليكم الطريقة السالفة الذكر عملية جدا لكن يمكن كسرها وذلك بمسح المفتاح شريطة أن يكون الإنسان داهية وبالذهاب مباشر إلى 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
عليك بتغيير عدد الأيــام وشكرا