我正在使用 ActivePython 2.5 来读取注册表中 pGina 所做的条目。具体来说,有关计算机上允许哪些 GID 的条目。通过 pGina 编辑的每台计算机的此信息可以定期更改,因此我希望我的 Python 脚本每次都能够检查这些值。
很容易。以下 Windows 命令将为我获取该信息:
reg query HKLM\Software\pGina\ldapauth\
...除了我用 Python 运行它时,我得到这个:
>>> import subprocess
>>> command = 'reg query HKLM\Software\pGina\ldapauth'
>>> ldapauth = subprocess.Popen(command, shell=False, stdout=subprocess.PIPE).communicate()[0]
ERROR: The system was unable to find the specified registry key or value.
因此,当我通过 Python 运行 'reg query HKLM\Software' 时,它会在 HK CU \Software 而不是 HKLM下吐出键和值的列表。
我以管理员身份运行 Python(通过使用 getpass.getuser() 确认),当我从批处理脚本运行相同的命令时,我在 HKLM 下得到了正确的列表。但是,当我从 Python 调用批处理脚本时,回到原来的 HKCU 结果。
所以,我有点卡住了。有没有人有任何见解?
编辑:正如稍后详述,我正在运行 Windows 7 64 位,并且我尝试了 _winreg 方法,包括 OpenKey 中可选的第四个“sam”参数。