找回密码
 加入
搜索
楼主: eaglelin

有没有修改XP序列号的源码 啊!?

[复制链接]
发表于 2008-11-8 12:00:31 | 显示全部楼层
  感谢SANHEN这个应该是很古老时候出品的序列号修改作品,参照之后,终于将时下流行的VB序列号修改脚本改成了AU3的了,当时没想到用FOR。。。IN老是出错退出,现在终于好了...
  大家说到的那个显示的序列号与系统正在使用的序列号不同的情况,应该反向生成代码已经不适合现在的序列号情况吧.

Dim $VOL_PROD_KEY, $setKEY

$VOL_PROD_KEY=InputBox("Windows XP/2003 序列号更换工具","使用说明(OEM版无效):"&@CRLF&@CRLF&"  本程序将修改当前 Windows 的序列号。请选择一个微软授权正版Windows 的序列号,复制并粘贴到下面的输入框中。"&@CRLF&@CRLF&"输入序列号(默认为 XP VLK):","MRX3F-47B9T-2487J-KWKMF-RPWBY",'',300,200)

if $VOL_PROD_KEY="" then Exit

$setKEY = StringReplace($VOL_PROD_KEY,"-","")

$objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}")
$colComputers = $objWMIService.InstancesOf ("win32_WindowsProductActivation")
;~ $strComputer = "."
;~ $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
;~ $colComputers = $objWMIService.ExecQuery("Select * from win32_WindowsProductActivation")
For $obj In $colComputers
        $obj.SetProductKey($setKEY)
        If @error = 0 Then
                MsgBox(64, "恭喜!!!", "您的 Windows CD-KEY 修改成功。请检查系统属性。"&@CRLF&@CRLF&"现在的序列号为:"&$VOL_PROD_KEY)
        Else
                MsgBox(16, "失败", "修改失败!请检查输入的 CD-KEY 是否与当前 Windows 版本相匹配。")
        EndIf
Next
 楼主| 发表于 2008-11-8 14:16:27 | 显示全部楼层
非常感谢!这个代码正确
发表于 2008-11-8 16:26:45 | 显示全部楼层
读取的也是错的....
发表于 2008-11-8 16:49:11 | 显示全部楼层
读取的函数的确出错了,非常抱歉。我测试的是用以前的EXE读取的,但是以前的EXE读取是正确的。但是用脚本读取现在的XP SP3 ,2003 SP2确实出错了。

现在用WMI读取却正常,而以前的代码读取KEY不对的原因正在查找中。
发表于 2008-11-8 17:27:35 | 显示全部楼层
找到原因了,是新版的问题。以下函数用3.2.11.10.1版来运行读取是正常的。
而试了几个新版读取出的KEY都是不正确了的。这段时间没留意过新版,不知道更新了什么东西,而导致函数出错了。奇怪中,以下函数用到的都是内置的东西,而居然新版返回的结果有问题。。。


Func DecodeProductKey($BinaryDPID)
Local $bKey[15]
Local $sKey[29]
Local $Digits[24]
Local $Value = 0
Local $hi = 0
Local $n = 0
Local $i = 0
Local $dlen = 29
Local $slen = 15
Local $Result

$Digits = StringSplit("BCDFGHJKMPQRTVWXY2346789", "")
$BinaryDPID = StringMid($BinaryDPID, 105, 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


发表于 2008-11-8 19:51:51 | 显示全部楼层
谢谢你们了。感谢了。
发表于 2008-11-8 19:56:08 | 显示全部楼层
原帖由 redapple2008 于 2008-11-8 19:51 发表
谢谢你们了。感谢了。


你的问题解决了?
用个老点的版本编译,代码是正确的,是新版的问题
发表于 2009-2-2 11:21:00 | 显示全部楼层
3.3.0.0.1,,返回CDkey是错的。新版有问题?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-18 20:07 , Processed in 0.066033 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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