我正在尝试在64位系统上访问HKEY_LOCAL_MAHINE \ SOFTWARE下的注册表项。我有以下代码,但根据结果判断它被重定向到Wow6432Node,即使我的代码中有 _winreg.DisableReflectionKey(_winreg.OpenKey(HKEY_LOCAL_MACHINE,“SOFTWARE”))。
import _winreg
import wmi
c = wmi.WMI(computer="localhost", namespace="root/default").StdRegProv
_winreg.DisableReflectionKey(_winreg.OpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE"))
result, names = c.EnumKey(hDefKey=_winreg.HKEY_LOCAL_MACHINE, sSubKeyName="SOFTWARE")
print names
_winreg.EnableReflectionKey(_winreg.OpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE"))
我已阅读以下案例,但似乎所描述的解决方案对作者或我都不起作用: How can I turn off registry redirection on Python?
还检查了_winreg文档,但没有具体的例子,我不知道我做错了什么。有任何想法吗?对不起,我无权在现有案例中发表评论,不得不开一个新案例。
答案 0 :(得分:1)
看起来“_winreg.KEY_READ | _winreg.KEY_WOW64_64KEY”完成了这项工作。更确切地说,您需要以这种方式打开密钥:
_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, "SOFTWARE", 0, _winreg.KEY_READ | _winreg.KEY_WOW64_64KEY)
访问localhost注册表时我得到了这个功能。但是,我仍然没有想出如何连接到域上的远程注册表。尝试使用_winreg.ConnectRegistry,但继续获取访问被拒绝错误。