从32位Python更改64位注册表

5
1个回答

6
根据您提供的MSDN文章,64位Windows有两个注册表视图,一个为32位,另一个为64位。默认情况下,32位应用程序(例如由32位Python解释器执行的Python脚本)将访问32位视图。您可以使用MSDN文章中提到的标志强制访问64位视图。要使用这些标志,您需要使用正确的参数调用_winreg.OpenKey、_winreg.CreateKeyEx或_winreg.DeleteKeyEx,如下所示:
handle = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, "your_sub_key", 0, _winreg.KEY_READ | _winreg.KEY_WOW64_64KEY)

请参阅_winreg文档以获取更多信息。


如果我执行以下操作:_winreg.KEY_WOW64_64KEY,我会得到一个错误:“module”对象没有属性“KEY_WOW64_WOW”。 - oz123
你使用的是哪个Python版本?在_winreg 2.7文档中我可以找到KEY_WOW64_64KEY,但在_winreg 2.6文档中却没有。也许这就是问题所在? - Florian Brucker
尝试直接使用常量值:根据MSDNKEY_WOW64_64KEY的值为0x0100KEY_WOW64_32KEY的值为0x0200。Python 2.4版本的_winreg模块应该支持将标志传递给OpenKey函数。相关的文档没有明确提到CreateKeyExDeleteKeyEx函数(您需要这些函数来传递标志),但前者在页面底部提到,因此可能存在但未记录。 - Florian Brucker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接