使用python获取Windows产品
2种方法:
1、使用WMIC命令查询
2、查询注册表BackupProductKeyDefault
示例代码:
python
import subprocess
import winreg
import sys
def run_as_admin():
"""请求以管理员权限运行脚本"""
try:
# 此处可放置获取密钥的主要代码
main()
except PermissionError:
print("请以管理员身份运行此脚本。")
sys.exit(1)
def main():
print("尝试获取Windows产品密钥...")
print("-" * 40)
# 方法1: 使用wmic命令
print("方法1 - 使用WMIC命令查询:")
try:
result = subprocess.run(
['wmic', 'path', 'softwarelicensingservice', 'get', 'OA3xOriginalProductKey'],
capture_output=True,
text=True,
check=True
)
# 清理输出,提取密钥
lines = result.stdout.strip().split('\n')
if len(lines) > 1 and lines[1].strip():
key = lines[1].strip()
print(f" 找到密钥: {key}")
else:
print(" 未找到密钥 (可能为数字许可证激活)")
except subprocess.CalledProcessError as e:
print(f" 执行失败: {e}")
# 方法2: 查询注册表 BackupProductKeyDefault
print("\n方法2 - 查询注册表BackupProductKeyDefault:")
try:
reg_path = r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, reg_path) as key:
value, reg_type = winreg.QueryValueEx(key, "BackupProductKeyDefault")
if value:
print(f" 注册表备份密钥: {value}")
else:
print(" 注册表值为空")
except FileNotFoundError:
print(" 注册表键或值不存在")
except Exception as e:
print(f" 读取注册表失败: {e}")
print("\n" + "-" * 40)
print("提示:如果未获取到有效密钥,您的系统可能是通过"数字许可证"激活的。")
if __name__ == "__main__":
# 检查是否为管理员权限,Windows下可根据需要自行添加UAC检查逻辑
run_as_admin()
输出结果:
