1 1 1 1 1 1 1 1 1 1 Rating 5.00 (2 Votes)

Problemstellung:
Bezugnehmend auf den Beitrag
Access-DB als Demo weitergeben
hab ich mal den Faden weiter gesponnen um das Demo mit einem Lizenzschlüssel freizuschalten.
Ich gehe aber hier nur auf die Registry-Lösung ein (mit der Property-Lösung ist aber genau so möglich).
Auch ist in der Bsp-DB nur die Möglichkeit der zeitlichen Limitierung enthalten, die Lösung mit der
Anzahl der DB-Starts funktioniert äquvivalent.

Voraussetzungen:
Das Bsp ist ab A00 lauffähig.

Funktionsweise:
In der Datei "tk_Lizenzverwaltung00.mdb" besteht die Möglichkeit mehrere Projekte zu verwalten.
Die MDB ist sehr einfach aufgebaut und nur zur Demonstration.
Im Formulare werden im HFO nur der Programmname und das Passwort festgelegt.




Das Kennwort ist das, welches dann im eigentlichen Programm als globale Konstante gesetzt wird.
Dieses Kennwort wird zur Verschlüsselung der Angaben benötigt.
Durch verschiedene Kennwörter kommt bei gleichen Usern niemals der gleiche Schlüssel raus.
Sprich bei verschiedenen Programmen muss nur immer ein anderes Kennwort festgelegt werden.
Möchte ein User das Programm lizenzieren, muss er seinen Namen und seine E-Mail Adresse angeben.
Daraus berechnet das Programm einen 16stelligen Schlüssel.
Ansicht des Feldes in der Abfrage:

UserKey: Hex$(CRC32Unicode(Encrypt([Username];[ProgrammPWD]))) & "-" & Hex$(CRC32Unicode(Encrypt([User_EMail];[ProgrammPWD])))

Zur Ausführung werden die Module "mod_CRC32" und "mod_Crypter" benötigt.
Den erhaltenen Schlüssel erhält dann der User an seine E-Mail Adresse zur Freischaltung und damit kommen wir zu Teil2.

Im Modul "mod_Crypter" wird die globale Konstante "sPWD" mit dem Kennwort der DB festgelegt.

Public Const sPWD As String = "geheim"


Beim ersten Starten der "tk_Freischaltung97" bzw. "tk_Freischaltung00" wird der Registerschlüssel für den
Benutzungszeitraum gesetzt. Näheres dazu s. hier
Access-DB als Demo weitergeben
Wenn jetzt ein User das Programm freischalten will fordert er einen Lizenzschlüssel an, s.o.
Nach Erhalt dieses Schlüssels kann dieser in das Registrierformular eingegeben werden.

Die Eingabe von Namen und E-Mail Adresse muss genauso erfolgen wie bei der Anforderung.
Auch ist die Groß- und Kleinschreibung zu beachten. Sind alle Angaben gemacht werden mit
dem Button „Registrieren“ alle Angaben geprüft.

Private Sub cmd_Reg_Click()
    Dim sTempKey As String
sTempKey = Hex$(CRC32Unicode(Encrypt(Me.txt_Name, sPWD))) & "-" & _
           Hex$(CRC32Unicode(Encrypt(Me.txt_Email, sPWD)))
    If sTempKey = Me.txt_RegKey Then
        MsgBox "Der eingegebene Registrierschlüssel ist richtig." & vbNewLine & _
               "Das Programm ist jetzt registriert.", vbInformation + vbOKOnly, "Fehler"
        fStringSpeichern HKEY_CURRENT_USER, "WinApp", "WinAppLUser", Me.txt_Name
        fStringSpeichern HKEY_CURRENT_USER, "WinApp", "WinAppEMailUser", Me.txt_Email
        fStringSpeichern HKEY_CURRENT_USER, "WinApp", "WinAppLKey", sTempKey
        DoCmd.Close
        Forms![frm_Start]![txt_Start].SetFocus
        Forms![frm_Start]![cmd_Reg].Enabled = False
    Else
        MsgBox "Der eingegebene Registrierschlüssel ist falsch." & vbNewLine & _
               "Bitte geben Sie den richtigen Schlüssel ein.", vbCritical + vbOKOnly, "Fehler"
    End If
End Sub


Es wird aus Name, E-Mail Adresse und Kennwort der Lizenzschlüssel gebildet und mit dem eingegebenen verglichen.
Stimmen beide überein werden die Angaben in die Registry geschrieben ansonsten ist die Registrierung fehlgeschlagen.


Beim nächsten Starten der DB werden die Schlüssel gesucht und geprüft. Ist alles o.k. startet das Programm ganz normal.
Wurde dagegen der Schlüssel manipuliert wird das Programm wieder in den Demo-Modus zurück gesetzt.

Private Sub Form_Load()
    On Error Resume Next
    Dim sDateTemp As String
    Dim intDays As Integer
    Dim sTemp As String, sTemp2 As String
    Dim sTemp3 As String, sTemp4 As String
    Dim sTempKey As String
    Dim sValue As String
    Dim dateTemp As Date
    sTemp = fWertLesen(HKEY_CURRENT_USER, "WinApp", "WinAppValue")
    sTemp2 = fWertLesen(HKEY_CURRENT_USER, "WinApp", "WinAppLKey")
    sTemp3 = fWertLesen(HKEY_CURRENT_USER, "WinApp", "WinAppLUser")
    sTemp4 = fWertLesen(HKEY_CURRENT_USER, "WinApp", "WinAppEMailUser")
    sValue = Encrypt(Day(Date) & Format(Month(Date), "00") & Year(Date), sPWD)
    If sTemp = "" Then
        fStringSpeichern HKEY_CURRENT_USER, "WinApp", "WinAppValue", sValue
        MsgBox "Sie können das Programm noch 30 Tage testen"
    Else
        If sTemp2 <> "" Or sTemp3 <> "" Or sTemp4 <> "" Then
            Me.cmd_Reg.Enabled = False
            sTempKey = Hex$(CRC32Unicode(Encrypt(sTemp3, sPWD))) & "-" & _
                       Hex$(CRC32Unicode(Encrypt(sTemp4, sPWD)))
            If sTempKey <> sTemp2 Then
                MsgBox "Der in der Registry vorhandene Schlüssel ist falsch." & vbNewLine & _
                       "Bitte geben Sie den richtigen Schlüssel neu ein.", vbCritical + vbOKOnly, "Fehler"
                fWerteLoeschen HKEY_CURRENT_USER, "WinApp", "WinAppLKey"
                fWerteLoeschen HKEY_CURRENT_USER, "WinApp", "WinAppLUser"
                fWerteLoeschen HKEY_CURRENT_USER, "WinApp", "WinAppEMailUser"
                Me.cmd_Reg.Enabled = True
            End If
        Else
            Me.cmd_Reg.Enabled = True
            sDateTemp = Decrypt(sTemp, sPWD)
            dateTemp = DateSerial(Right(sDateTemp, 2), Mid(sDateTemp, 3, 2), Left(sDateTemp, 2))
            intDays = DateDiff("d", Date, dateTemp)
            If intDays < (intCountDays * -1) Then
                MsgBox "Testzeitraum abgelaufen"
                DoCmd.Quit
            Else
                MsgBox "Sie können das Programm noch " & intCountDays + intDays & " Tage testen"
            End If
        End If
    End If
End Sub
Zusammenfassung:
Diese Lösung stellt keine ultimative Lösung und schon gar nicht den absoluten Schutz des Programms dar aber ist eine einfache Alternative.
Sinn würde der Einsatz nur in MDE-Dateien oder in MDB-Dateien mit geschütztem VBA-Code machen.

Dateien:

Demos von Access-DB's freischalten

ab A00

Die Zip-Datei enthält eine Version ab A00

Datum 05.02.2018
Dateigröße 93.15 KB
Download 2.077

Ähnliche Artikel

Kommentar schreiben

Sicherheitscode
Aktualisieren

Login Form

1.png1.png9.png3.png1.png8.png2.png
Heute55
Gestern56
Diese Woche111
Dieser Monat1241
Total1193182

  • IP: 54.81.78.135
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

1
Online

22. Mai 2018