试图通过_winreg获取MachineGuid但不工作

时间:2013-11-22 05:14:10

标签: python windows winreg

我可以在注册表编辑器中看到值,路径为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

1 个答案:

答案 0 :(得分: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

参考:Change 64bit Registry from 32bit Python