''''''''''''''''''''''''''''''''''''''
' Solution Manager Key 生成器 '
'复制本文档,存为 SolManKeyGen.vbs '
' 执行 '
''''''''''''''''''''''''''''''''''''''
'-------------------------------------------------------
Dim SIDs,SNs,SERVs,msg,ENDs,KEYs
msg="系统标识 (3位)"
SIDs=InputBox(msg,"Solution Manager Key 生成器")
msg="系统编号 (2位)"
SNs=InputBox(msg,"Solution Manager Key 生成器")
msg="主机名(最多15位)"
SERVs=InputBox(msg,"Solution Manager Key 生成器")
KEYs=SolManKeyGen(SIDs,SERVs)
msg="Solution Manager Key"
ENDs=InputBox(msg,"Solution Manager Key 生成器",KEYs)
'-------------------------------------------------------
Function SolManKeyGen(SIDst,SNst,SERVst)
Dim SIDSNhex(5)
Dim SERVhex(15)
Dim reshex(5)
SIDSNstr = UCase(SIDst) + UCase(SNst)
SERVstr = UCase(SERVst)
For arrcnt = 1 To 5
SIDSNhex(arrcnt) = Asc(Mid(SIDSNstr,arrcnt,1))
Next
For arrcnt = 1 To Len(SERVstr)
SERVhex(arrcnt) = Asc(Mid(SERVstr,1))
Next
For arrcnt = Len(SERVstr) + 1 To 15
SERVhex(arrcnt) = 0
Next
If (Len(SERVstr) > 0) Then
If (Len(SERVstr) < 5) Then
For arrcnt = Len(SERVstr) + 1 To 5
SERVhex(arrcnt) = Asc(" ")
Next
End If
End If
If (Len(SERVstr) > 5) Then
If (Len(SERVstr) < 10) Then
For arrcnt = Len(SERVstr) + 1 To 10
SERVhex(arrcnt) = Asc(" ")
Next
End If
End If
If (Len(SERVstr) > 10) Then
If (Len(SERVstr) < 15) Then
For arrcnt = Len(SERVstr) + 1 To 15
SERVhex(arrcnt) = Asc(" ")
Next
End If
End If
For arrcnt = 1 To 5
reshex(arrcnt) = ((((0 Xor SIDSNhex(arrcnt)) Xor SERVhex(arrcnt)) Xor SERVhex(arrcnt + 5)) Xor SERVhex(arrcnt + 10))
Next
reshex(1) = reshex(1) Xor 84 Xor 0
reshex(2) = reshex(2) Xor 131 Xor 11
reshex(3) = reshex(3) Xor 194 Xor 46
reshex(4) = reshex(4) Xor 52 Xor 105
reshex(5) = reshex(5) Xor 119 Xor 188
hexstr = "0123456789ABCDEF"
resstr = ""
For arrcnt = 1 To 5
hihex = reshex(arrcnt) \ 16
lohex = reshex(arrcnt) Mod 16
resstr = resstr + Mid(hexstr,hihex + 1,1) + Mid(hexstr,lohex + 1,1)
Next
SolManKeyGen = resstr
End Function
原文链接:https://www.f2er.com/windows/373023.html