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.435

Ähnliche Artikel

You have no rights to post comments

Login Form

Neueste Artikel

SQL zu VBA Konverter
26. Oktober 2018
Problemstellung: Nur für 32Bit Office Versionen Gibt es eine Möglichkeit SQL-Code einer Abfrage so zu konvertieren das der Code in VBA genutzt werden kann? Lösung: Bis Access 2010 gibt das Tool...
1.png5.png7.png6.png2.png1.png3.png
Heute209
Gestern206
Diese Woche415
Dieser Monat4836
Total1576213

  • IP: 44.204.164.147
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

6
Online

19. März 2024

Letzte Kommentare

  • Berechnen von Zeiträumen als Abfragekriterium

    elmard 02.02.2021 21:02
    1000 Dank
    für diese Datenbankanwendung! Eine sehr gute Umsetzung mit den vielen Möglichkeiten des Datums.

    Weiterlesen...

     
  • SQL zu VBA Konverter

    Tommy Admin 03.11.2019 16:33
    RE: SQL zu VBA Konverter
    Hallo Elmard, danke für die Info. :lol:

    Weiterlesen...

     
  • SQL zu VBA Konverter

    elmard 03.11.2019 14:49
    Bei SmartTools neue Version 4.0
    Dieses Tool liegt inzwischen in der Version 4 vor und läuft nun auch von A2013 und A2016 sowie im ...

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    TommyK 27.02.2019 06:52
    Workshop
    Hallo mpegjunkie, danke für Dein Feedback. Schön das Dir Workshop weiter hilft. :D

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    mpegjunkie 26.02.2019 20:10
    Perfekter Workshop
    Hallo Tommy, perfekter Workshop, toll und umfassend erläutert. Jetzt nutze ich diese Controls auch.

    Weiterlesen...