您好我正在尝试为我正在开发的脚本添加软许可证我不希望任何复杂的事情,它不一定是万无一失的。在过去,我使用了一个List,我也添加了捐赠者名称,但在这种情况下它不起作用,因为软件不会在任何地方显示登录名。我以为我可以抓住Windows登录或主板信息的任何想法?
List=userxys,user123,etc
Loop, Parse, List, `,
GroupAdd, DONATORS, %A_LoopField% ahk_class QDPKGamesSystems
Return
Freeware:
IfWinExist, ahk_group DONATORS
{
SetTimer, Freeware, Off
Return
}
Else
{
MsgBox ,, Script123, Script123 has closed `if you find Script123 useful please consider making a donation. Find details Menu>Donate. , 30
ExitApp
}
答案 0 :(得分:0)
你可以使用keygen。它们是一种非常糟糕的安全方法,因为它们可以(有点容易)进行逆向工程(例如,99%的“许可”软件)。但是,如果你没有很多用户,那就不是问题了。
Gui, 2:Add, Edit, w300 vName2, name
Gui, 2:Add, Edit, w300 vCode2, code
Gui, 2:Add, Button, w300 gSubmit2, Submit
Gui, 2:Add, Button, w300 gTestCode, Test Code ; Remove this button in production
; Run this when they press the "Enter Donor Key" button elsewhere
Gui, 2:Show,, Enter Donor Key
return
TestCode: ; Remove this label in production
Gui, 2:submit, nohide
GuiControl,, Code2, % GetCodeFromName(name2)
return
GetCodeFromName(name) {
len := StrLen(name)
sum := 0
loop %len%
{
sum += Asc(SubStr(name, A_Index, 1))
}
Random,, %sum%
outs := ""
loop 15
{
Random, rand, 1, 26
outs .= Chr(64 + rand)
}
return outs
}
CheckCode(name, code) {
return GetCodeFromName(name) = code
}
Submit2:
Gui, 2:Submit
if CheckCode(name2, code2)
MsgBox Rodger that, captain!
else
MsgBox Invalid
return
2GuiClose:
ExitApp
您应该将自己的算法放在GetCodeFromName
中,但这样可以将ID /代码对传递给您的捐赠者。它可能是他们的电子邮件地址,名字等。它区分大小写,但将StrLower放在那里会解决这个问题。
算法描述(如果它有助于修改它):名称的字符代码相加在一起产生一个大数字。该数字用作随机数生成器的种子。这意味着相同的名称给出相同的种子,它给出相同的随机数序列。根据种子,选择15个大写字母(ASCII格式为65到90)。那是你的代码。同名 - >相同的代码。