windows序列号可以直接在注册表中读取,PowerShell要做的只是读出数据后稍作处理,让它更像一个序列号。
function Get-ProductKey { $map="BCDFGHJKMPQRTVWXY2346789" $value = (get-itemproperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").digitalproductid[0x34..0x42] $ProductKey = "" for ($i = 24; $i -ge 0; $i--) { $r = 0 for ($j = 14; $j -ge 0; $j--) { $r = ($r * 256) -bxor $value[$j] $value[$j] = [math]::Floor([double]($r/24)) $r = $r % 24 } $ProductKey = $map[$r] + $ProductKey if (($i % 5) -eq 0 -and $i -ne 0) { $ProductKey = "-" + $ProductKey } } $ProductKey }
输出结果为:
PS> Get-ProductKey VKTXG-GXXY3-W97QP-GP4PV-XXXXX
参考自:Boe Prox 的Updating An Existing Get-ProductKey Function
本文链接: https://www.pstips.net/get-product-key.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
实测 windows 7可用,能正常显示序列号;windows 8.1下不行,输出结果为BBBBB-BBBBB-BBBBB-BBBBB-BBBBB,不知何解?
好神奇啊,我上文中输出就是在windows8.1上面测试的。
我再用一台Windows 8.1的机器测试输出结果为: