_winreg.QueryValueEx returns "mixed typed" 二进制值

_winreg.QueryValueEx returns "mixed typed" binary value

在 Python 3.4 下,我使用 winreg.QueryValueEx() 从注册表中获取键值,以便将其与文本文件进行比较。 我遇到了 REG_BINARY 键值为 bytes 但其中有 unicode 值的问题:

我将返回值(十六进制值列表)用于包含预期十六进制值的文本文件。这些粗体值不是预期的,因为它们不是十六进制格式,而且我事先并不知道它们是否可以做一些变通方法来专门处理它们。

在Python 2.7 中,没有任何问题。我猜这与 Python 3 分离 strbytes 甚至 Python 3.

中的 winreg 错误有关

如果您能提供帮助和提示以将其统一为单一类型,我们将不胜感激。 谢谢!

看起来您在注册表中的数据甚至不是 unicode。 您甚至需要将其解码为 un​​icode 吗?

为什么不将数据存储在二进制文件中?

bytes_data = winreg.QueryValueEx(your_key)
with open("filename.txt", "wb") as stream:
    stream.write(bytes_data)