منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
عمل ترخيص سنوي لبرنامج مع تجديده كل سنة بحيث لو تغير تاريخ الجهاز يبقى عداد الايام صح - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم امثلة ومشاريع VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=188)
+--- الموضوع : عمل ترخيص سنوي لبرنامج مع تجديده كل سنة بحيث لو تغير تاريخ الجهاز يبقى عداد الايام صح (/showthread.php?tid=48852)



عمل ترخيص سنوي لبرنامج مع تجديده كل سنة بحيث لو تغير تاريخ الجهاز يبقى عداد الايام صح - غزة العزة - 26-05-24

لإنشاء نظام ترخيص سنوي لبرنامج VB.NET مع القدرة على تجديده كل سنة وضمان أن عداد الأيام يبقى صحيحًا حتى لو تم تغيير تاريخ الجهاز، يمكنك اتباع الخطوات التالية:

تخزين تاريخ بدء الترخيص وتاريخ انتهاء الترخيص في مكان آمن:

يمكنك استخدام قاعدة بيانات، أو ملف مشفر، أو تسجيل الدخول إلى نظام خادم عن بعد لتخزين هذه المعلومات.
يفضل تشفير البيانات لتجنب التلاعب.
التحقق من تاريخ الجهاز:

عند بدء البرنامج، قارن التاريخ الحالي بالتواريخ المخزنة.
إذا تم اكتشاف أن التاريخ تم تغييره بشكل غير مشروع، قم بإعلام المستخدم واتخاذ الإجراءات المناسبة (مثل قفل البرنامج).
إعادة ضبط التاريخ الصحيح:

يمكنك الاستفادة من خادم وقت موثوق عبر الإنترنت للحصول على التاريخ الصحيح في كل مرة يتم فيها تشغيل البرنامج.
إليك مثال بسيط يوضح الفكرة باستخدام ملف نصي مشفر لتخزين التواريخ:

1. تخزين التواريخ في ملف مشفر



كود :
Imports System.IO
Imports System.Security.Cryptography
Imports System.Text

Module LicenseModule
   Dim encryptionKey As String = "your_encryption_key"

   Function EncryptData(ByVal data As String) As String
       Dim keyBytes() As Byte = Encoding.UTF8.GetBytes(encryptionKey)
       Dim inputBytes() As Byte = Encoding.UTF8.GetBytes(data)
       Dim hashProvider As New MD5CryptoServiceProvider()
       Dim tdesKey() As Byte = hashProvider.ComputeHash(keyBytes)
       Dim tdesAlgorithm As New TripleDESCryptoServiceProvider()
       tdesAlgorithm.Key = tdesKey
       tdesAlgorithm.Mode = CipherMode.ECB
       tdesAlgorithm.Padding = PaddingMode.PKCS7
       Dim encryptor As ICryptoTransform = tdesAlgorithm.CreateEncryptor()
       Dim results() As Byte = encryptor.TransformFinalBlock(inputBytes, 0, inputBytes.Length)
       Return Convert.ToBase64String(results)
   End Function

   Function DecryptData(ByVal data As String) As String
       Dim keyBytes() As Byte = Encoding.UTF8.GetBytes(encryptionKey)
       Dim inputBytes() As Byte = Convert.FromBase64String(data)
       Dim hashProvider As New MD5CryptoServiceProvider()
       Dim tdesKey() As Byte = hashProvider.ComputeHash(keyBytes)
       Dim tdesAlgorithm As New TripleDESCryptoServiceProvider()
       tdesAlgorithm.Key = tdesKey
       tdesAlgorithm.Mode = CipherMode.ECB
       tdesAlgorithm.Padding = PaddingMode.PKCS7
       Dim decryptor As ICryptoTransform = tdesAlgorithm.CreateDecryptor()
       Dim results() As Byte = decryptor.TransformFinalBlock(inputBytes, 0, inputBytes.Length)
       Return Encoding.UTF8.GetString(results)
   End Function

   Sub SaveLicense(ByVal startDate As DateTime, ByVal endDate As DateTime)
       Dim data As String = startDate.ToString("yyyy-MM-dd") & "|" & endDate.ToString("yyyy-MM-dd")
       Dim encryptedData As String = EncryptData(data)
       File.WriteAllText("license.dat", encryptedData)
   End Sub

   Function LoadLicense() As Tuple(Of DateTime, DateTime)
       If File.Exists("license.dat") Then
           Dim encryptedData As String = File.ReadAllText("license.dat")
           Dim data As String = DecryptData(encryptedData)
           Dim dates() As String = data.Split("|"c)
           Dim startDate As DateTime = DateTime.ParseExact(dates(0), "yyyy-MM-dd", Nothing)
           Dim endDate As DateTime = DateTime.ParseExact(dates(1), "yyyy-MM-dd", Nothing)
           Return New Tuple(Of DateTime, DateTime)(startDate, endDate)
       Else
           Return Nothing
       End If
   End Function

   Function CheckLicense() As Boolean
       Dim license As Tuple(Of DateTime, DateTime) = LoadLicense()
       If license IsNot Nothing Then
           Dim currentDate As DateTime = DateTime.Now
           If currentDate >= license.Item1 AndAlso currentDate <= license.Item2 Then
               Return True
           Else
               Return False
           End If
       Else
           Return False
       End If
   End Function
End Module


2. التحقق من صحة الترخيص عند بدء البرنامج

PHP كود :
Sub Main()
 
   If Not CheckLicense() Then
        MessageBox
.Show("الترخيص منتهي أو غير صالح.")
 
       ' قم بإنهاء البرنامج أو اتخاذ الإجراء المناسب
        Environment.Exit(0)
    End If

    ' 
بقية برنامجك هنا
End Sub 


3. تجديد الترخيص

PHP كود :
Sub RenewLicense()
 
   Dim newStartDate As DateTime DateTime.Now
    Dim newEndDate 
As DateTime newStartDate.AddYears(1)
 
   SaveLicense(newStartDatenewEndDate)
 
   MessageBox.Show("تم تجديد الترخيص بنجاح.")
End Sub 


تأكد من ضبط encryptionKey لقيمة قوية وفريدة لتشفير البيانات. يمكنك استخدام خدمة خادم وقت موثوقة لضمان أن التاريخ الحالي صحيح وغير متلاعب به.


RE: عمل ترخيص سنوي لبرنامج مع تجديده كل سنة بحيث لو تغير تاريخ الجهاز يبقى عداد الايام صح - jalaltech - 26-05-24

الف شكر على هذا الجهد ... هل بالامكان توضيح مثالعلى كيفية استخدام الاكواد بشكل مفصل لو سمحت


RE: عمل ترخيص سنوي لبرنامج مع تجديده كل سنة بحيث لو تغير تاريخ الجهاز يبقى عداد الايام صح - غزة العزة - 27-05-24

هذا الموضوع لاعطاء فكرة عامة لعمل الترخيص 

لذلك يجب على من يريد استخدامها ان يبذل بعض الجهد في فهم الاكواد المذكورة ويبني على اساسها مشروعه


RE: عمل ترخيص سنوي لبرنامج مع تجديده كل سنة بحيث لو تغير تاريخ الجهاز يبقى عداد الايام صح - atefkhalf2004 - 27-05-24

حضرتك لو عايز ابدأ الترخيص من 2024 الي 2025
كيف اعطي الترخيص
كيف اعمل التحديث
وهل التحديث يكون بملف خارجي وهذاهو الافضل
كيف ذلك