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
    }
4

1 回答 1

0

您可以使用注册机。它们是一种糟糕的安全方法,因为它们可以(有点容易)被逆向工程(例如,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)。那是你的代码。相同的名称-> 相同的代码。

于 2013-01-06T08:08:03.700 回答