26-05-24, 09:03 AM
لإنشاء نظام ترخيص سنوي لبرنامج VB.NET مع القدرة على تجديده كل سنة وضمان أن عداد الأيام يبقى صحيحًا حتى لو تم تغيير تاريخ الجهاز، يمكنك اتباع الخطوات التالية:
تخزين تاريخ بدء الترخيص وتاريخ انتهاء الترخيص في مكان آمن:
يمكنك استخدام قاعدة بيانات، أو ملف مشفر، أو تسجيل الدخول إلى نظام خادم عن بعد لتخزين هذه المعلومات.
يفضل تشفير البيانات لتجنب التلاعب.
التحقق من تاريخ الجهاز:
عند بدء البرنامج، قارن التاريخ الحالي بالتواريخ المخزنة.
إذا تم اكتشاف أن التاريخ تم تغييره بشكل غير مشروع، قم بإعلام المستخدم واتخاذ الإجراءات المناسبة (مثل قفل البرنامج).
إعادة ضبط التاريخ الصحيح:
يمكنك الاستفادة من خادم وقت موثوق عبر الإنترنت للحصول على التاريخ الصحيح في كل مرة يتم فيها تشغيل البرنامج.
إليك مثال بسيط يوضح الفكرة باستخدام ملف نصي مشفر لتخزين التواريخ:
1. تخزين التواريخ في ملف مشفر
2. التحقق من صحة الترخيص عند بدء البرنامج
3. تجديد الترخيص
تأكد من ضبط encryptionKey لقيمة قوية وفريدة لتشفير البيانات. يمكنك استخدام خدمة خادم وقت موثوقة لضمان أن التاريخ الحالي صحيح وغير متلاعب به.
تخزين تاريخ بدء الترخيص وتاريخ انتهاء الترخيص في مكان آمن:
يمكنك استخدام قاعدة بيانات، أو ملف مشفر، أو تسجيل الدخول إلى نظام خادم عن بعد لتخزين هذه المعلومات.
يفضل تشفير البيانات لتجنب التلاعب.
التحقق من تاريخ الجهاز:
عند بدء البرنامج، قارن التاريخ الحالي بالتواريخ المخزنة.
إذا تم اكتشاف أن التاريخ تم تغييره بشكل غير مشروع، قم بإعلام المستخدم واتخاذ الإجراءات المناسبة (مثل قفل البرنامج).
إعادة ضبط التاريخ الصحيح:
يمكنك الاستفادة من خادم وقت موثوق عبر الإنترنت للحصول على التاريخ الصحيح في كل مرة يتم فيها تشغيل البرنامج.
إليك مثال بسيط يوضح الفكرة باستخدام ملف نصي مشفر لتخزين التواريخ:
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 Module2. التحقق من صحة الترخيص عند بدء البرنامج
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(newStartDate, newEndDate)
MessageBox.Show("تم تجديد الترخيص بنجاح.")
End Sub
تأكد من ضبط encryptionKey لقيمة قوية وفريدة لتشفير البيانات. يمكنك استخدام خدمة خادم وقت موثوقة لضمان أن التاريخ الحالي صحيح وغير متلاعب به.
غَزة شجرة سنديان لا تنحني، ووردة لا تذبل، وشوكة عصية على الكسر. غزة، دماؤها تنتصر على السيف والسياف.
متغيب لفترة ان اخطأت بحق احد ارجو المسامحة



