$key = RegRead("HKLM\SOFTWARE\MICROSOFT\Windows NT\CurrentVersion", "DigitalProductId")
MsgBox(0,"",GetXPKey($key))
Func GetXPKey($binaryDPID)
Local $bKey[15],$sKey[29],$Digits[24],$Value = 0
Local $hi = 0,$n = 0,$i = 0,$dlen = 29,$slen = 15
Local $Result
$Digits = StringSplit("BCDFGHJKMPQRTVWXY2346789", "")
;$binaryDPID = stringmid($binaryDPID, 105, 30) ;旧版用这个
$binaryDPID = stringmid($binaryDPID, 107, 30)
For $i = 1 to 29 step 2
$bKey[int($i / 2)] = dec(stringmid($binaryDPID, $i, 2))
next
For $i = $dlen - 1 To 0 Step -1
If Mod(($i + 1), 6) = 0 Then
$sKey[$i] = "-"
Else
$hi = 0
For $n = $slen - 1 To 0 Step -1
$Value = Bitor(bitshift($hi, -8), $bKey[$n])
$bKey[$n] = int($Value / 24)
$hi = mod($Value, 24)
Next
$sKey[$i] = $Digits[$hi + 1]
EndIf
Next
For $i = 0 To 28
$Result = $Result & $sKey[$i]
Next
Return $Result
EndFunc ;==>GetXPKey
早年前收藏的,出自谁手忘记了。 |