You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Windows注册表中获取并解码Windows 10 20H2产品密钥

Windows 10 20H2 产品密钥获取及解码方案

1. 二进制产品密钥的注册表路径

Win10 20H2及后续版本调整了产品密钥的存储位置,旧方案读取的注册表字段已失效,正确的读取路径为:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform
需要读取该路径下的BackupProductKeyDefault键值,返回的二进制数据即为待解码的原始密钥数据。

注意:读取该注册表项需要管理员权限,普通权限运行会触发权限不足错误。

2. 二进制密钥解码方法(含Python实现)

解码逻辑

  • 从二进制原始数据中提取偏移量为52的连续16个字节,为加密后的核心密钥数据
  • 预设字符集为BCDFGHJKMPQRTVWXY2346789,共24个有效字符作为解码映射表
  • 循环25次计算密钥字符:每次将16字节数据按位运算得到对应字符集下标,取出对应字符后更新剩余数值
  • 将得到的25位字符按每5位一组,用短横线-拼接得到最终产品密钥

Python实现代码

import winreg

def decode_windows_key(encoded_key):
    chars = "BCDFGHJKMPQRTVWXY2346789"
    decoded = []
    key_bytes = list(encoded_key[52:52+16])
    
    for i in range(25):
        current = 0
        for j in range(15, -1, -1):
            current = current * 256 + key_bytes[j]
            key_bytes[j] = current // 24
            current = current % 24
        decoded.append(chars[current])
        if (i + 1) % 5 == 0 and i != 24:
            decoded.append('-')
    return ''.join(decoded)

def get_windows_product_key():
    try:
        reg_path = r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"
        key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, reg_path, 0, winreg.KEY_READ | winreg.KEY_WOW64_64KEY)
        encoded_key, _ = winreg.QueryValueEx(key, "BackupProductKeyDefault")
        winreg.CloseKey(key)
        return decode_windows_key(encoded_key)
    except PermissionError:
        return "错误:请以管理员权限运行脚本后重试"
    except FileNotFoundError:
        return "错误:当前系统版本不支持该密钥获取方式"

if __name__ == "__main__":
    print(get_windows_product_key())

说明:该代码仅支持Windows系统运行,依赖系统自带的winreg模块,无需额外安装第三方依赖。

内容的提问来源于stack exchange,提问作者technician

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 16:57:02