Registrierung von Anwendungen

Wenn Sie eine Anwendung programmieren und später als Lösung verkaufen möchten, müssen Sie auf irgendeine Weise sicherstellen, dass nur der jeweilige Käufer damit arbeiten kann. Anderenfalls passiert es leicht, dass dieser die Anwendung an andere Nutzer weitergibt – vielleicht sogar ohne das Bewusstsein, dass er den Hersteller der Software um seinen Lohn bringt. In diesem Beitrag stellen wir Ihnen eine Lösung vor, mit der Sie Ihre Anwendungen vor der Weitergabe an Dritte schützen – und das sogar mit zeitlicher Begrenzung.

Bei der in diesem Beitrag beschriebenen Lösung gehen wir zunächst davon aus, dass der Benutzer sich eine Anwendung aus dem Internet herunterlädt oder diese per E-Mail von Ihnen erhält.

Nach der Installation soll die Anwendung beim ersten Start prüfen, ob der Benutzer einen Satz von Registrierungsdaten eingegeben hat, die aus einem Benutzernamen und einem Registrierungsschlüssel bestehen.

Ist dies geschehen und sind die Registrierungsdaten gültig, sollen diese Daten irgendwo in der Anwendung gespeichert werden und die Anwendung starten.

Bei jedem folgenden Aufruf liest die Anwendung die gespeicherten Registrierungsdaten automatisch aus und bricht den Start entweder ab oder führt die Anwendung aus – je nachdem, ob die Registrierungsdaten noch gültig sind.

Bindung des Registrierungsschlüssels an den Benutzernamen

Damit der Registrierungsschlüssel nicht von beliebigen Benutzern verwendet werden kann, wird dieser mindestens auf Basis des Benutzernamens erstellt. Für die Verschlüsselung des Namens und somit die Erstellung des Registrierungsschlüssels verwenden wir die in der Klasse clsCrypt enthaltenen Algorithmen etwa zum Berechnen eines SHA1-verschlüsselten Ausdrucks (Quellenangabe siehe Beispieldatenbank).

SHA steht für Secure Hash Algorithm. Dieser Algorithmus soll einen eindeutigen Prüfwert etwa für eine Zeichenkette liefern, also einen Wert, der vom Inhalt der Zeichenkette abhängt.

Wenn Sie also sicherstellen möchten, dass die Anwendung nur von einem Benutzer verwendet wird, der als Benutzername seinen Namen und als Registrierungsschlüssel den Hash-Wert einsetzt, brauchen Sie nur einen solchen Wert zu berechnen und später beim Start der Anwendung zu prüfen, ob die Kombination dieser beiden Werte zusammenpasst.

Den Aufruf der Methode GetSHA1 dieser Klasse haben wir wie in Listing 1 im Modul mdlTools gekapselt.

Listing 1: Aufruf der Verschlüsselungsfunktionen der Klasse clsCrypt

Public Function GetSHA1(strKey As String) As String
    Dim objCrypt As New clsCrypt
    Dim strSHA1 As String
    strSHA1 = objCrypt.GetSHA1(strKey)
    GetSHA1 = strSHA1
    Set objCrypt = Nothing
End Function

Im Direktfenster testen Sie diese Funktion etwa so:

 GetSHA1("Klaus Müller")
04538C3BBD1B721D87F6570B577D1D0A3E7390AD

Angenommen, Sie hätten einem Klaus Müller diese Kombination aus Benutzername und Registrierungsschlüssel geschickt, muss er diese beim ersten Start einer Anwendung eingeben.

Die Kombination wird dann irgendwo in der Datenbank gespeichert, damit der Benutzer diese beim nächsten Start nicht erneut eingeben muss. Dies könnte beispielsweise in einer eigens dafür eingerichteten Tabelle geschehen. Diese nennen Sie tblRegistrierung und legen die beiden Felder Benutzername und Registrierungsschluessel an, sodass die Tabelle wie in Abb. 1 aussieht.

pic001.png

Abb. 1: Tabelle zum Speichern der Benutzerdaten

Formular beim Öffnen anzeigen

Nach dieser Vorbereitung benötigen wir einen Ort, an dem wir die Prüfung der Benutzerdaten durchführen – sofern diese überhaupt bereits vorliegen. Dafür legen Sie ein Formular an, das an die Tabelle tblRegistrierung gebunden ist und den Namen frmStart erhält. Legen Sie dieses Formular in den Access-Optionen als Startformular fest, sodass dieses gleich nach dem Start der Anmeldung erscheint.

Das Formular enthält vier Steuerelemente: zwei Textfelder namens txtBenutzername und txtRegistrierungsschluessel, die an die beiden Felder der Datenherkunft gebunden sind, sowie zwei Schaltflächen namens cmdOK und cmdAbbrechen (s. Abb. 2).

pic002.png

Abb. 2: Formular zur Eingabe der Benutzerdaten

Die Schaltfläche cmdAbbrechen soll die Eingabe der Benutzerdaten abbrechen und die Anwendung schließen. Dafür hinterlegen Sie für diese Schaltfläche die folgende Prozedur:

Private Sub cmdAbbrechen_Click()
    DoCmd.Quit
    End Sub

Stellen Sie außerdem die Eigenschaft Abbrechen der Schaltfläche auf den Wert Ja ein. Dies sorgt dafür, dass die Anwendung auch beim Betätigen der Escape-Taste geschlossen wird. Das Prüfen der Benutzerdaten erledigt eine kleine Funktion namens BenutzerdatenPruefen (s. Listing 2).

Listing 2: Prüfung der Benutzerdaten

Private Function BenutzerdatenPruefen() As Boolean
    BenutzerdatenPruefen = (GetSHA1(Nz(Me!txtBenutzername)) = Nz(Me!txtRegistrierungsschluessel))
End Function

Die Funktion ermittelt den Hash-Wert des Benutzernamens und vergleicht diesen mit dem für den Registrierungsschlüssel angegebenen Wert. Stimmen beide überein, liefert die Funktion den Wert True zurück.

Beim Öffnen des Formulars wird diese Funktion erstmalig aufgerufen. Dazu legen Sie für das Ereignis Beim Laden des Formulars die folgende Prozedur an:

Private Sub Form_Load()
    If BenutzerdatenPruefen Then
        DoCmd.Close acForm, Me.Name
        DoCmd.OpenForm "frmMain"
    End If
    End Sub

War die Prüfung erfolgreich, schließt die Prozedur einfach das aktuelle Formular und öffnet ein weiteres Formular namens frmMain, das beispielsweise dem Hauptformular der Anwendung entspricht. Sie können natürlich auch einfach das Formular schließen und die verfügbaren Funktionen in der Menüleiste oder im Ribbon anzeigen.

Stimmen der Hash-Wert des Benutzernamens und der Registrierungsschlüssel nicht überein, bleibt das Formular einfach geöffnet. Der Benutzer hat dann die Gelegenheit, die Benutzerdaten einzugeben. Die Eingabe beendet der Benutzer mit einem Klick auf die Schaltfläche OK, was die folgende Prozedur auslöst:

Private Sub cmdOK_Click()
    If BenutzerdatenPruefen Then
        DoCmd.Close acForm, Me.Name
        DoCmd.OpenForm "frmMain"
    Else
        MsgBox "Falsche Benutzerdaten."
    End If
    End Sub

Hier erfolgt die gleiche Prüfung wie beim Laden des Formulars. Im Erfolgsfall wird das Formular geschlossen und frmMain geöffnet. Stimmt die Kombination aus Benutzername und Registrierungsschlüssel nicht, erscheint eine Meldung mit dem Text Falsche Benutzerdaten. Der Benutzer kann dann erneut seine Daten eingeben oder mit einem Klick auf Abbrechen die Anwendung beenden (s. Abb. 3).

pic005.png

Abb. 4: Prinzipieller Ablauf beim Prüfen und Eingeben der Registrierungsdaten

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar