Freischaltung nur für eine Festplatte

Leserbewertung(7):bewerten...
kommentieren...

Hans Happel

Sie haben eine Anwendung geschrieben und wollen diese weitergeben oder verkaufen. Um zu verhindern, dass ihr Programm zur Raubkopie wird sollten Sie einen Schutz einbauen.

Erstellen Sie ein Programm das aus einer mehrstelligen Zahl ein Passwort erzeugt. Geben Sie dieses Programm niemals weiter.
Bauen Sie in die Anwendung die Sie weitergeben möchten eine Routine ein, die aus dem Passwort wieder die ursprüngliche Zahl erzeugt.
Schieben Sie ein Drive-Steuerelement auf Ihre Form. Machen Sie es evtl. unsichtbar.
Machen Sie es dem Anwender leicht Ihnen die Seriennummer seiner Festplatte mitzuteilen. Erstellen Sie ein Label-Element und geben sie folgendes in das Klick-Ereignis ein:

Private Sub Label1_Click()
Dim SerNum As Long
Dim Empfänger As String
Dim Betreff As String
SerNum = SerienNummer(Left(Drive1.Drive, 2) & "\")
Empfänger = "MeinName@meineDomain.de"
Betreff = "Freischaltung für Laufwerk Nr.: " & SerNum
Call ShellExecute(Me.hWnd, vbNullString, "mailto:" & Empfänger & "?subject=" & Betreff, "", "", 1)
End Sub

Laden Sie folgendes in den Deklarationsteil:

Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Erstellen Sie folgende Funktion:

Function SerienNummer(ByVal spDrive As String) As Long
Dim sVName As String * 100
Dim SerNum As Long
GetVolumeInformation spDrive, sVName, 100, SerNum, vbNull, vbNull, vbNullString, 0
SerienNummer = SerNum
End Function

Den Inhalt des Load-Ereignisses können Sie kopieren oder über das Eigenschaftenfenster eingeben.

Private Sub Form_Load()
With Label1
.FontUnderline = True
.ForeColor = vbBlue
.FontBold = True
.FontSize = 12
.Caption = "MeinName@meineDomain.de"
.AutoSize = True
End With
End Sub

Wenn der Anwender auf Label1 klickt, wird Outlook Express gestartet. Ihre Adresse ist bereits eingeblendet und im Betreff-Teil steht die Seriennummer seiner Festplatte.

  • Machen Sie aus der Seriennummer ein Passwort.
  • Senden Sie das Passwort an den Anwender.
  • Das Passwort wird in der eingebauten Routine entschlüsselt und mit der Seriennummer verglichen.

Mit dieser Methode wird ihre Anwendung nur für eine Festplatte freigeschaltet. Jeder darf das Passwort sehen. Sie können es öffentlich versenden. Nur Ihr Verschlüsselungsprogramm dürfen Sie niemandem zeigen. Aus diesem Grunde wird hier auch keine Verschlüsselungs-Routine gezeigt. Ihr Schlüssel muss nicht sehr kompliziert sei, es sei den Ihr Kunde ist ein echter Hacker. Otto-Normal-User wird ihn nicht knacken.