将Python安装信息写入Windows注册表的脚本示例

阿麦
阿麦
发布时间:2026-10-13 | 3人浏览过
原创

本文提供将Python安装信息写入Windows注册表的Python脚本示例。针对重装系统后仅配置环境变量但缺少注册表信息导致交互失败的问题,通过修改注册表项HKEY_CURRENT_USER下的SOFTWARE\Python\Pythoncore路径,自动写入InstallPath和PythonPath键值。代码兼容Python 2.x与3.5.2版本,用于解决第三方库(如pywin32)因注册表缺失导致的安装或运行问题。

Python注册表配置背景

背景

在重装操作系统后,有时会发现原本安装在E盘的Python环境依然可以直接使用,这通常是因为仅将Python的安装目录添加到了系统环境变量中。此前并未深究其原理,但在尝试与天软系统进行交互时遭遇持续失败,推测原因可能是系统注册表中缺失了必要的Python注册信息。

以下代码源自网络,可直接复制运行,此处留存以供后续参考。

Python 3.5.2注册脚本

代码

Python 3.5.2版本实现


import sys

from winreg import *

# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix

regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
  installpath, installpath, installpath
)

def RegisterPy():
  try:
    reg = OpenKey(HKEY_CURRENT_USER, regpath)
  except EnvironmentError as e:
    try:
      reg = CreateKey(HKEY_CURRENT_USER, regpath)
      SetValue(reg, installkey, REG_SZ, installpath)
      SetValue(reg, pythonkey, REG_SZ, pythonpath)
      CloseKey(reg)
    except:
      print("*** Unable to register!")
      return
    print("--- Python", version, "is now registered!")
    return
  if (QueryValue(reg, installkey) == installpath and
    QueryValue(reg, pythonkey) == pythonpath):
    CloseKey(reg)
    print("=== Python", version, "is already registered!")
    return
  CloseKey(reg)
  print("*** Unable to register!")
  print("*** You probably have another Python installation!")

if __name__ == "__main__":
  RegisterPy()

Python 2.x注册脚本

Python 2.*版本实现


'''
解决注册问题,pywin32安装存在问题
'''

import sys

from _winreg import *

# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix

regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
  installpath, installpath, installpath
)

def RegisterPy():
  try:
    reg = OpenKey(HKEY_CURRENT_USER, regpath)
  except EnvironmentError as e:
    try:
      reg = CreateKey(HKEY_CURRENT_USER, regpath)
      SetValue(reg, installkey, REG_SZ, installpath)
      SetValue(reg, pythonkey, REG_SZ, pythonpath)
      CloseKey(reg)
    except:
      print "*** Unable to register!"
      return
    print "--- Python", version, "is now registered!"
    return
  if (QueryValue(reg, installkey) == installpath and
    QueryValue(reg, pythonkey) == pythonpath):
    CloseKey(reg)
    print "=== Python", version, "is already registered!"
    return
  CloseKey(reg)
  print "*** Unable to register!"
  print "*** You probably have another Python installation!"

if __name__ == "__main__":
  RegisterPy()

以上关于将Python安装信息加入注册表的示例内容分享完毕,希望能为遇到类似问题的读者提供参考,也欢迎大家继续支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表