gpt4 book ai didi

Python 3 winreg : unable to write to the Windows registry

转载 作者:行者123 更新时间:2023-12-01 09:34:01 29 4
gpt4 key购买 nike

尝试通过下面提供的路径将值写入 HKLM 配置单元。代码默默地完成,没有错误或异常,但是值保持不变。该脚本在管理员下执行,没有它就会按预期抛出 AccessDenied (5) Windows 错误。未安装可能阻止访问注册表的防病毒软件。

def write_to_registry(key_hive, key_path, value_name, value_type, key_value):
registry_key = None
try:
registry_key = winreg.OpenKey(key_hive, key_path, 0, winreg.KEY_WRITE)
winreg.SetValueEx(registry_key, value_name, 0, value_type, key_value)
winreg.CloseKey(registry_key)
return True
except Exception as e:
logger.error("Unable to write to registry path {0}\\{1} with exception {2}", key_hive, key_path, e)
if registry_key is not None:
winreg.CloseKey(registry_key)
return False

def winreg_test():
write_to_registry(winreg.HKEY_LOCAL_MACHINE,
"SOFTWARE\Microsoft\Windows NT\CurrentVersion",
"InstallDate",
winreg.REG_DWORD,
1520610000)

我什至怀疑我遇到了某种系统 Hook (Windows NT 是一个敏感 key ,你知道),但手动编辑或使用命令行工作正常

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v InstallDate /t REG_DWORD /d 1520610000 /f

对“InstallDate”键进行编辑,没有任何问题

Python 3.6.5

Windows 7 SP1 x64

更新:问题已解决,请参阅下面的解决方案

最佳答案

显然,原因在于 x64 系统“双”注册表(针对 32 位和 64 位应用程序)。将代码更改为

winreg.OpenKey(key_hive, key_path, 0, (winreg.KEY_WOW64_64KEY | winreg.KEY_WRITE))

让事情顺利进行

关于Python 3 winreg : unable to write to the Windows registry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49691285/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com