在 python 中向 windows 注册表添加数据时如何解决“[错误 5] 访问被拒绝”

how to solve "[Error 5] Access is denied " during adding data to windows registry in python

这是我的代码:

import _winreg
import sys

try:
    key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Run',
                          _winreg.KEY_SET_VALUE)
    _winreg.SetValueEx(key, 'pytest', 0, _winreg.REG_BINARY, 'C:\Users\Default\Desktop\est.py')
    _winreg.QueryInfoKey(key)
    key.Close()
    print "Successfully Added"
except:
    print "Unexpected error:", sys.exc_info()[1],sys.exc_info()[0]

我已经通过

从中制作了一个 exe
pyinstaller.exe --onefile testDemo.py

它生成一个“testDemo.exe”文件。 当我尝试在 cmd 中 运行 时 [有或没有管理员模式] 我明白了。

Unexpected error: [Error 5] Access is denied <type 'exceptions.WindowsError'>

如何解决?

第三个参数reserved在OpenKey的调用中丢失

winreg.OpenKeyEx(key, sub_key, reserved=0, access=KEY_READ)

reserved 是保留整数,必须为零。默认值为零。