找回密码
 加入
搜索
楼主: 只为关注

[系统综合] 如何能让我的脚本程序只安装在一台机器上?不让用户到私自安装到其他电脑上?

 火... [复制链接]
发表于 2015-3-16 08:26:21 | 显示全部楼层
[quote]用MAC地址生成注册码,启动前输入注册码,这样你想给谁安装都可以,他们再分发出去就无法安装,因为没有 ...
每次运行都要输入注册码?
能说祥细点
发表于 2015-3-16 09:28:10 | 显示全部楼层
回复 9# 只为关注


    IF 语句搞定。
发表于 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[0] Then
                                $iError = @error + 10
                                $iExtended = @extended
                                $vReturn = -1
                                ExitLoop
                        EndIf
                        $hCryptHash = $aRet[5]
                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[0] 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[0] Then
                                $iError = @error + 30
                                $iExtended = @extended
                                $vReturn = -1
                                ExitLoop
                        EndIf
                        $iHashSize = $aRet[3]
                        $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[0] 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[0])

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2015-3-16 09:55:30 | 显示全部楼层
回复 33# smooth

谢谢!!运行“注册信息提取”工具,将得到一个DAT文件,找不到 DAT文件
发表于 2015-3-16 10:17:25 | 显示全部楼层
回复 33# smooth

我还没理解,
每次运行脚本都要输入注册码?
这是用在软件安装工具脚本?
发表于 2015-3-16 12:39:55 | 显示全部楼层
回复 1# 只为关注
其实很简单,你弄个网页,上面放段字符串.然后你让特定时间打开一次软件,你也在同事把服务器上的那个网页打开.把字符串下载下来,保存在本地.以后每次打开软件的时候,验证下本地有没有那段字符串就行了.
注:这样有个好处,不需要他发任何东西给你.
发表于 2015-3-16 20:43:26 | 显示全部楼层
回复  smooth

谢谢!!运行“注册信息提取”工具,将得到一个DAT文件,找不到 DAT文件
chzj589 发表于 2015-3-16 09:55


找不到DAT文件的话,你安装一下7Z,就可以了。至于是每次运行脚本输入注册码,还是在软件安装工具,这个看你自己把注册验证放在哪个阶段了。
发表于 2015-3-16 22:10:08 | 显示全部楼层
回复 37# smooth
收到,谢谢回复
发表于 2015-3-17 15:08:18 | 显示全部楼层
锁定电脑名不就ok了,不是设定的电脑名不让运行不就好了!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 07:22 , Processed in 0.111807 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表