首页 文章

Python脚本的Windows注册表访问

提问于
浏览
1

我正在研究一个Python 3.7脚本,最终将成为像reg.exe这样的CLI程序 . 我的目标是包括添加,删除和查询键和子键的功能 . 此时,我可以创建一个新密钥并迭代特定路径中的所有密钥;一旦我尝试将值写入我所创建的新密钥,我就会得到一个WinError 5 - 拒绝访问 .

有没有一种方法可以在脚本中包含一种访问写入注册表的方法?

我仍然是Python和编程的初学者,我看过文档,但我不能想出这个 .

任何帮助将不胜感激 . 我的代码太远了:

import winreg

reg_connection = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)

reg_key = winreg.OpenKey(reg_connection, r"SOFTWARE\Microsoft\\")

winreg.CreateKey(reg_key, "New Key")

for key in range(3000):
    try:
        show_sub_keys = winreg.EnumKey(reg_key, key)
        print(show_sub_keys)
    except WindosError:
        break

new_key_value = winreg.OpenKey(reg_connection, r"SOFTWARE\Microsoft\New Key")
winreg.SetValueEx(new_key_value, "New Value",0,winreg.REG_SZ, "This Value")
winreg.CloseKey(new_key_value)

1 回答

  • 1

    new_key_value = winreg.OpenKey(reg_connection,r“SOFTWARE \ Microsoft \ New Key”)

    在这里,您没有为可选的 access 参数指定参数,因此调用将传递默认值 KEY_READ . 因此,您只能读取密钥,但不能写入 .

    您应该传递 access 参数的参数,该参数指定您需要的权限:

    new_key_value = winreg.OpenKey(reg_connection, r"SOFTWARE\Microsoft\New Key", 0, 
                                   winreg.KEY_SET_VALUE)
    

    有关详细信息,请参阅winreg reference .

相关问题