gpt4 book ai didi

python - Windows 阻止对 HKLM 进行注册查询;改为返回 HKCU

转载 作者:可可西里 更新时间:2023-11-01 09:35:29 25 4
gpt4 key购买 nike

我正在使用 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 调用批处理脚本时,返回到 ole' HKCU 结果。

所以,我有点卡住了。有没有人有任何见解?

编辑:如后所述,我正在运行 64 位 Windows 7,并且我尝试了 _winreg 方法,包括 OpenKey 中可选的第 4 个“sam”参数。

最佳答案

使用winreg . (winreg.OpenKeywinreg.Query*)。速度更快,无需考虑运行 shell 命令,它甚至会以 OO 方式返回 BINARY 等棘手的注册表值类型。

#import _winreg as winreg # the 'correct' idiom for importing
from _winreg import *

with OpenKey(HKEY_LOCAL_MACHINE,'Software\pGina\ldapauth') as key:
... do something with QueryValue(key[,...])

winreg 可以很好地完成工作,尽管界面非常古怪,因为底层的 Windows 界面是。您可能很想为查找调用编写一个包装器,尤其是。如果像我一样,你编写了一个生成器来获取子键的递归和枚举、与键名的模式匹配、将搜索限制为某些允许的注册表值等。

关于python - Windows 阻止对 HKLM 进行注册查询;改为返回 HKCU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7071972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com