تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
عمل ترخيص سنوي لبرنامج مع تجديده كل سنة بحيث لو تغير تاريخ الجهاز يبقى عداد الايام صح
#1
لإنشاء نظام ترخيص سنوي لبرنامج 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 لقيمة قوية وفريدة لتشفير البيانات. يمكنك استخدام خدمة خادم وقت موثوقة لضمان أن التاريخ الحالي صحيح وغير متلاعب به.
غَزة شجرة سنديان لا تنحني، ووردة لا تذبل، وشوكة عصية على الكسر. غزة، دماؤها تنتصر على السيف والسياف.
متغيب لفترة ان اخطأت بحق احد ارجو المسامحة
الرد }}}
تم الشكر بواسطة: asmarsou , asmarsou , programmer_25
#2
الف شكر على هذا الجهد ... هل بالامكان توضيح مثالعلى كيفية استخدام الاكواد بشكل مفصل لو سمحت
الرد }}}
تم الشكر بواسطة:
#3
هذا الموضوع لاعطاء فكرة عامة لعمل الترخيص 

لذلك يجب على من يريد استخدامها ان يبذل بعض الجهد في فهم الاكواد المذكورة ويبني على اساسها مشروعه
غَزة شجرة سنديان لا تنحني، ووردة لا تذبل، وشوكة عصية على الكسر. غزة، دماؤها تنتصر على السيف والسياف.
متغيب لفترة ان اخطأت بحق احد ارجو المسامحة
الرد }}}
تم الشكر بواسطة:
#4
حضرتك لو عايز ابدأ الترخيص من 2024 الي 2025
كيف اعطي الترخيص
كيف اعمل التحديث
وهل التحديث يكون بملف خارجي وهذاهو الافضل
كيف ذلك
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  فحص النص هل هو تاريخ حقيقي او غير معتمد بالجهاز justforit 5 671 13-11-25, 05:19 AM
آخر رد: justforit
  ارسال واستقبال نص لبرنامج justforit 0 155 17-10-25, 10:01 PM
آخر رد: justforit
  فكرة جميلة جدا : أزي تعمل عداد لعمر البرنامج بدون قاعدة بيانات(نسخة تجريبية) ggtt17121985 0 573 14-02-25, 02:55 AM
آخر رد: ggtt17121985
  [مشروع] تصميم احترافي لبرنامج شئون الموظفين باستخدام ديف اكسبريس + تحميل السورس كود mazentq 7 7,693 14-10-24, 05:21 PM
آخر رد: بوحمد
Question [VB.NET] كيف يمكن تغير اتجاه الرسائل بحث تكون من اليمين الى اليسار ؟ Microformt 1 693 20-12-23, 10:55 PM
آخر رد: Kamil
  [مثال] كيفية تعبئة كمبوبوكس بدلالة تغير عنصر في كومبو آخر asmarsou 0 1,316 08-08-22, 10:54 PM
آخر رد: asmarsou
Rainbow [كود] حساب التاريخ والوقت بالايام والساعات والثواني الى تاريخ محدد محمد مسافر 9 2,186 21-06-22, 03:03 PM
آخر رد: سعود
  [مشروع] تحويل عدد الايام الى اعوام و شهور وايام سعود 0 1,169 28-12-21, 08:33 AM
آخر رد: سعود
  [VB.NET] طلب سورس كود لبرنامج ادراة الديون بلغة vb.net b97er 0 1,565 10-12-21, 02:38 AM
آخر رد: b97er
Star [VB.NET] استخدام ايقونات الجهاز واستخدام treeview & listview والبحث عن الملفات والمجلدات معاند الحظ 3 2,300 07-02-21, 03:10 AM
آخر رد: معاند الحظ

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


يقوم بقرائة الموضوع: