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了,不是设定的电脑名不让运行不就好了!!