chzj589 发表于 2015-3-16 08:26:21

用MAC地址生成注册码,启动前输入注册码,这样你想给谁安装都可以,他们再分发出去就无法安装,因为没有 ...
每次运行都要输入注册码?
能说祥细点

haopp1 发表于 2015-3-16 09:28:10

回复 9# 只为关注


    IF 语句搞定。

smooth 发表于 2015-3-16 09:30:34

本帖最后由 smooth 于 2015-3-16 09:32 编辑

回复 31# chzj589

附件为注册信息提取及注册机,你想在哪台电脑上安装,就运行“注册信息提取”工具,将得到一个DAT文件,然后运行注册码生成工具,将生成一个注册码。然后在你的脚本里获取网卡地址,并用MD5加密函数进行加密,判断得到的注册码是否与用户输入的一致,一致就允许安装,不一致就退出。



MD3加密函数:

Func _Crypt_HashData($vData, $iALG_ID, $fFinal = True, $hCryptHash = 0)
        Local $iError = 0, $iExtended = 0
        Local $vReturn = 0
        Local $iHashSize = 0
        Local $aRet
        Local $hBuff = 0
        _Crypt_Startup()
        Do
                If $hCryptHash = 0 Then
                        $aRet = DllCall(__Crypt_DllHandle(), "bool", "CryptCreateHash", "handle", __Crypt_Context(), "uint", $iALG_ID, "ptr", 0, "dword", 0, "handle*", 0)
                        If @error Or Not $aRet Then
                                $iError = @error + 10
                                $iExtended = @extended
                                $vReturn = -1
                                ExitLoop
                        EndIf
                        $hCryptHash = $aRet
                EndIf
                $hBuff = DllStructCreate("byte[" & BinaryLen($vData) & "]")
                DllStructSetData($hBuff, 1, $vData)
                $aRet = DllCall(__Crypt_DllHandle(), "bool", "CryptHashData", "handle", $hCryptHash, "struct*", $hBuff, "dword", DllStructGetSize($hBuff), "dword", $CRYPT_USERDATA)
                If @error Or Not $aRet Then
                        $iError = @error + 20
                        $iExtended = @extended
                        $vReturn = -1
                        ExitLoop
                EndIf
                If $fFinal Then
                        $aRet = DllCall(__Crypt_DllHandle(), "bool", "CryptGetHashParam", "handle", $hCryptHash, "dword", $HP_HASHSIZE, "dword*", 0, "dword*", 4, "dword", 0)
                        If @error Or Not $aRet Then
                                $iError = @error + 30
                                $iExtended = @extended
                                $vReturn = -1
                                ExitLoop
                        EndIf
                        $iHashSize = $aRet
                        $hBuff = DllStructCreate("byte[" & $iHashSize & "]")
                        $aRet = DllCall(__Crypt_DllHandle(), "bool", "CryptGetHashParam", "handle", $hCryptHash, "dword", $HP_HASHVAL, "struct*", $hBuff, "dword*", DllStructGetSize($hBuff), "dword", 0)
                        If @error Or Not $aRet Then
                                $iError = @error + 40
                                $iExtended = @extended
                                $vReturn = -1
                                ExitLoop
                        EndIf
                        $vReturn = DllStructGetData($hBuff, 1)
                Else
                        $vReturn = $hCryptHash
                EndIf
        Until True
        If $hCryptHash <> 0 And $fFinal Then DllCall(__Crypt_DllHandle(), "bool", "CryptDestroyHash", "handle", $hCryptHash)
        _Crypt_Shutdown()
        Return SetError($iError, $iExtended, $vReturn)
EndFunc   ;==>_Crypt_HashData


获取网卡地址:

#NoTrayIcon
#RequireAdmin

$aArray = _GetMACAddress()
MsgBox(0,0,$aArray)

Func _GetMACAddress()
    local $sText, $iPID
    $iPID = Run(@ComSpec & " /c ipconfig /all", '', @SW_HIDE, 6)
    While 1
      $sText &= StdoutRead($iPID)
      If @error Then ExitLoop
    WEnd
    Return StringRegExp($sText, "(?s)(?i)([\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2})", 3)
EndFunc

chzj589 发表于 2015-3-16 09:55:30

回复 33# smooth

谢谢!!运行“注册信息提取”工具,将得到一个DAT文件,找不到 DAT文件

chzj589 发表于 2015-3-16 10:17:25

回复 33# smooth

我还没理解,
每次运行脚本都要输入注册码?
这是用在软件安装工具脚本?

www378660084 发表于 2015-3-16 12:39:55

回复 1# 只为关注
其实很简单,你弄个网页,上面放段字符串.然后你让特定时间打开一次软件,你也在同事把服务器上的那个网页打开.把字符串下载下来,保存在本地.以后每次打开软件的时候,验证下本地有没有那段字符串就行了.
注:这样有个好处,不需要他发任何东西给你.

smooth 发表于 2015-3-16 20:43:26

回复smooth

谢谢!!运行“注册信息提取”工具,将得到一个DAT文件,找不到 DAT文件
chzj589 发表于 2015-3-16 09:55 http://www.autoitx.com/images/common/back.gif

找不到DAT文件的话,你安装一下7Z,就可以了。至于是每次运行脚本输入注册码,还是在软件安装工具,这个看你自己把注册验证放在哪个阶段了。

chzj589 发表于 2015-3-16 22:10:08

回复 37# smooth
收到,谢谢回复

kemyliu 发表于 2015-3-17 15:08:18

锁定电脑名不就ok了,不是设定的电脑名不让运行不就好了!!
页: 1 2 [3]
查看完整版本: 如何能让我的脚本程序只安装在一台机器上?不让用户到私自安装到其他电脑上?