3

我可以在注册表编辑器中看到该值,路径为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography,但无法使用以下代码获取该值:

import _winreg

key = _winreg.OpenKey(
    _winreg.HKEY_LOCAL_MACHINE,
    "SOFTWARE\\Microsoft\\Cryptography"
    )

result = _winreg.QueryValueEx(key, "MachineGuid")

print result

我得到“系统找不到指定的文件”,这很令人困惑,因为它就在那里。

好吧,使用几乎完全相同的代码检索其他值没有问题:

key = _winreg.OpenKey(
    _winreg.HKEY_LOCAL_MACHINE,
    "SOFTWARE\\Microsoft\\COM3"
    )


result = _winreg.QueryValueEx(key, "BuildType")

print result

输出是:(u'Free', 1)

我做错了哪一部分?我该怎么做才能得到这个MachineGuid

4

1 回答 1

5

您的代码在 32 位 Windows 上运行良好,如果您希望它也可以在 64 位 Windows 上运行,请尝试以下操作:

key = _winreg.OpenKey(
    _winreg.HKEY_LOCAL_MACHINE,
    "SOFTWARE\\Microsoft\\Cryptography",
    0,
    _winreg.KEY_READ | _winreg.KEY_WOW64_64KEY
)

result = _winreg.QueryValueEx(key, "MachineGuid")
print result

参考:从 32 位 Python 更改 64 位注册表

于 2014-02-16T15:36:31.333 回答