0

我觉得我正在服用疯狂的药丸。因此,为了确保我正在使用的工作 api 的安全性,我必须从注册表中读取 2 个内容,然后将其传递给 suds。问题在于读取注册表值。无论我做什么,我都会得到“错误2系统找不到指定的文件”。我知道注册表文件在那里,但它不会让我阅读它。我已经在 2 个不同的 2008 r2 服务器上尝试了下面的代码。在一个 Windows 7 机器上,我可以读取这些值……但只能在一台机器上。下面是代码,我需要更改实际目录(以保护匿名)

from _winreg import *

key = OpenKey(HKEY_LOCAL_MACHINE, r"Software\a\b", 0, KEY_ALL_ACCESS)
devguid = QueryValueEx(key, "DeviceID")
devid = QueryValueEx(key, "DeviceGUID")
devnm = socket.gethostname()

如果我将目录更改为 \a\b 以外的其他目录,则它可以正常工作。我已经验证这些目录的权限与我可以读取的目录完全相同。

另外,我可以从 cmd 运行以下命令并获得我需要的输出: reg query HKLM\software\a\b /v DeviceGUID 但是当我从 python 脚本运行它时,它说找不到指定的文件。

import os
cmd = "reg query HKEY_LOCAL_MACHINE\software\a\b /v DeviceGUID"
a = os.system(cmd)
print a

以管理员身份运行我的脚本或任何东西都无济于事。由于某种原因,python 无法尝试准备注册表....

4

1 回答 1

0

首先,您需要确保您的反斜杠被适当地转义,或者按照第一个代码示例使用原始字符串。我会假设你已经做到了。

最可能的解释是您在 64 位系统上使用 32 位 Python。所以受制于注册表重定向器提供注册表的 32 位视图。

要么使用 64 位 Python,要么专门用 64 位视图打开它们。通过指定 KEY_WOW64_64KEY 标志来执行后者。

于 2013-04-11T01:11:39.743 回答