在Python中禁用注册表重定向到Wow6432Node

时间:2015-02-02 14:52:11

标签: python windows registry wmi winreg

我正在尝试在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文档,但没有具体的例子,我不知道我做错了什么。有任何想法吗?对不起,我无权在现有案例中发表评论,不得不开一个新案例。

1 个答案:

答案 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,但继续获取访问被拒绝错误。