Hi das ist meine erste UDF: Die CheckSerial UDF
Sie ist dazu da um Scripte nur mit Seriennummern auführen zu können. Und zwar offline ohne MySQL Datenbank. Ich habe nämlich schon öfter die Frage gehört wie man denn ein script mit seriennummer schützen kann. Und da dachte ich mir: "Mach doch einfach eine UDF" Vielleicht kann es ja jemand gebrauchen
Beispiel
#include <SerialCheck.au3>
[/autoit] [autoit][/autoit] [autoit]$check = _IniCheckSerial_Valid(@ScriptDir & "\test.ini", True, "its333")
If $check = 0 Then
MsgBox(0, "Hinweis", "Sie benutzen eine gültige Seriennummer")
Else
If $check = 2 Then MsgBox(16, "Warnung!", "Registrierungsdatei fehlt!")
_SerialCheck_Valid("([A-Z0-6]{4}(-|$)){4}", @ScriptDir & "\test.ini", True, "its333",True)
If @error = 1 Then
Exit
EndIf
EndIf
MsgBox(0, "Weiter", "Und das Skript läuft weiter")
[/autoit]CheckSerial UDF
#include <String.au3>
[/autoit] [autoit][/autoit] [autoit];===============================================================
; Name: _SerialCheck_Valid
; Description: Schützt Scripte dadurch in dem man einen Lizenkey eingeben muss.
; man diese selbst am Script Anfang abfragen.
; Parameter(s): $Pattern = RegEx Such Pattern zum finden einer gültigen Seriennummer.
; [Optional] $ini = Kompletter Datei Pfad zu einer .ini
; [Optional] $Encrypt = Per _StringEncrypt Verschlüsseln
; [Optional] $EncryptPass = Ecryption Passwort für _StringEncrypt Standard ist "_SerialCheck_Valid".
; [Optional] $InvalidExit = Exit wenn ungültiger Code eingegeben wurde. Standard ist True
; Return Value(s): @Error Values
; 0 = Erfolgreich
; 1 = ungültiger Key
; 2 = Kein RegEx Pattern angegeben
; Return Values:
; 0 = Erfolgreich
; 1 = ungültiger Key
; 2 = Kein RegEx Pattern angegeben
;
; Author(s): Molaynox <molaynox.bplaced.net> <[email='black.eyes.soft@gmx.de'][/email]>
; Version: 0.9 (BETA)
; Date: 09.11.2010
;===============================================================
Func _SerialCheck_Valid($Pattern, $ini = "", $Encrypt = False, $EncryptPass = "_SerialCheck_Valid",$InvalidExit = True)
If $Pattern = "" Then
SetError(2)
Return 2
EndIf
$pass = InputBox("Authorization needed!", "Um das Script weiter benutzen zu können müssen sie einen Lizenkey eingeben!", "")
$CheckKey = StringRegExp($pass, $Pattern, 1)
If $CheckKey = 0 Then
MsgBox(16 + 262144, "WARNUNG!", "Achtung ihr Lizenzkey ist ungültig. Bitte wiederholen sie den Vorgang." & _
@CRLF & "WARNING! Your License Key is invalid. Please try again.")
If $InvalidExit = True Then Exit
If Not $ini = "" Then
If $Encrypt = True Then
$write = IniWrite($ini, "_SerialCheck_Valid", "Validation", _StringEncrypt(1, "invalid", $EncryptPass))
If $write = 0 Then
MsgBox(16, "ERROR", "Zum Registrieren des Programmes sind Admin Rechte erforderlich. Bitte als Admin wiederholen.")
Exit
EndIf
Else
$write = IniWrite($ini, "_SerialCheck_Valid", "Validation", "invalid")
If $write = 0 Then
MsgBox(16, "ERROR", "Zum Registrieren des Programmes sind Admin Rechte erforderlich. Bitte als Admin wiederholen.")
Exit
EndIf
EndIf
EndIf
SetError(1)
Return 1
Exit
Else
MsgBox(262144, "License Key ist Gültig", "Ihr Lizenzkey ist gültig." & _
@CRLF & "Your License Key is valid.")
If Not $ini = "" Then
If $Encrypt = True Then
$write = IniWrite($ini, "_SerialCheck_Valid", "Validation", _StringEncrypt(1, "valid", $EncryptPass))
If $write = 0 Then
MsgBox(16, "ERROR", "Zum Registrieren des Programmes sind Admin Rechte erforderlich. Bitte als Admin wiederholen.")
Exit
EndIf
Else
$write = IniWrite($ini, "_SerialCheck_Valid", "Validation", "valid")
If $write = 0 Then
MsgBox(16, "ERROR", "Zum Registrieren des Programmes sind Admin Rechte erforderlich. Bitte als Admin wiederholen.")
Exit
EndIf
EndIf
EndIf
SetError(0)
EndIf
Return 0
EndFunc ;==>_SerialCheck_Valid
;===============================================================
; Name: _IniCheckSerial_Valid
; Description: Prüft ob
; man diese selbst am Script Anfang abfragen.
; Parameter(s): $ini = Kompletter Datei Pfad zu einer .ini
; [Optional] $Encrypt = Wenn ini in _SerialCheck_Valid verschlüsselt wurde auf True
; [Optional] $EncryptPass = Ecryption Passwort für _StringEncrypt Standard ist "_SerialCheck_Valid".
; Return Value(s): @Error Values
; 0 = .ini existiert
; 1 = .ini existiert nicht
; Return Values:
; 0 = valid Key
; 1 = invalid Key
; 2 = Problem mit .ini
;
; Author(s): Molaynox <molaynox.bplaced.net> <[email='black.eyes.soft@gmx.de'][/email]>
; Version: 0.9 (BETA)
; Date: 09.11.2010
;===============================================================
Func _IniCheckSerial_Valid($ini, $Encrypt = False, $EncryptPass = "_SerialCheck_Valid")
If Not FileExists($ini) Then
SetError(1)
Return 2
Else
SetError(0)
EndIf
If $Encrypt = True Then
$validation = IniRead($ini, "_SerialCheck_Valid", "Validation", "NotFound")
$crypt = _StringEncrypt(0, $validation, $EncryptPass)
If $crypt = "valid" Then
Return 0
ElseIf $crypt = "invalid" Then
Return 1
EndIf
ElseIf $Encrypt = False Then
$validation = IniRead($ini, "_SerialCheck_Valid", "Validation", "NotFound")
If $validation = "valid" Then
Return 0
ElseIf $validation = "invalid" Then
Return 1
EndIf
EndIf
EndFunc ;==>_IniCheckSerial_Valid