2013-01-06 57 views
0

嗨我想要太多的软件许可证添加到我正在开发的脚本我不想要任何复杂的东西,它不必是万无一失的。在过去,我使用了一个列表,我也添加了捐助者的名字,但在这种情况下它不起作用,因为软件不会在任何地方显示登录名。我以为我可以抓住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

您可以使用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)。这是你的代码。相同的名称 - >相同的代码。