gpt4 book ai didi

python-3.x - 为什么注册表值在 Windows 上的 Python 3 中的 winreg 中不匹配?

转载 作者:行者123 更新时间:2023-12-01 12:22:21 26 4
gpt4 key购买 nike


大家好!

我正在编写小型 python3 项目。在我的代码中,有一个函数可以检查用户是否安装了特定的 DirectX 版本。

该函数如下。

def check_directx():
try:
reg_obj = OpenKey(HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\DirectX')
except FileNotFoundError:
return False

dx_value_str = EnumValue(reg_obj, 1)[1][0:4]
CloseKey(reg_obj)

if dx_value_str != "4.09":
return False

return True

我想测试这个功能,所以我在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectX 中将原始版本值 (4.09.00.0904) 更改为 4.07.00.0904。但它没有用。变量 dx_value_str 的值仍然是 4.09.00.0904。

我搜索了注册表,发现 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectX 中有相同的键和值。我改变了这里的版本值,变量dx_value_str的值终于改变了。

如您所见,我打开了“SOFTWARE\Microsoft\DirectX”中的 key ,但它带来了“SOFTWARE\Wow6432Node\Microsoft\DirectX”中的值。

这样的情况可以吗?还是我的代码有问题?

请帮帮我!

最佳答案

这个问题是因为你可能使用的是 32 位 python,试试这个:

import winreg
reg_obj = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\DirectX',0, (winreg.KEY_WOW64_64KEY+ winreg.KEY_READ))
dx_value_str = winreg.EnumValue(reg_obj, 1)[1][0:4]
print(dx_value_str)
winreg.CloseKey(reg_obj)

关于python-3.x - 为什么注册表值在 Windows 上的 Python 3 中的 winreg 中不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43188548/

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