gpt4 book ai didi

Python winreg 遍历子键

转载 作者:太空狗 更新时间:2023-10-29 21:57:20 25 4
gpt4 key购买 nike

我能够使用以下代码从我的 Windows 7 机器注册表配置单元“HKEY_LOCAL_MACHINE”中成功检索 5 个子键。

from _winreg import *

try:
i = 0
while True:
subkey = EnumKey(HKEY_LOCAL_MACHINE, i)
print subkey
i += 1
except WindowsError:
pass

我的问题是,我该如何枚举这些键下的键?我想最终列出 SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged 文件夹中的所有 key ,但我不知道如何继续下去。

作为对第一条评论的回应,我在我的机器上运行了这段代码,虽然它没有出错,但没有产生结果。

from _winreg import *

aReg = ConnectRegistry(None,HKEY_LOCAL_MACHINE)
aKey = OpenKey(aReg, r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged")
for i in range(1024):
try:
keyname = EnumKey(aKey, i)
asubkey = OpenKey(aKey, keyname)
val = QueryValueEx(asubkey, "Description")
print val
except WindowsError:
break

regedit 或 reg 查询显示该文件夹中的 6 个值,但我无法获取 python 脚本来显示这六个值。

最佳答案

只是想添加一个可能更 pythonic 的解决方案。

from _winreg import *
from contextlib import suppress
import itertools

def subkeys(path, hkey=HKEY_LOCAL_MACHINE, flags=0):
with suppress(WindowsError), OpenKey(hkey, path, 0, KEY_READ|flags) as k:
for i in itertools.count():
yield EnumKey(k, i)

您现在可以按预期访问 key

for key in subkeys(r'path\to\your\key'):
print key

对于缺少 suppress() 的 python 版本 <3.4 ,我建议将它添加到您的项目中:

from contextlib import contextmanager

@contextmanager
def suppress(*exceptions):
try:
yield
except exceptions:
pass

Note: If you have trouble reading some values you might be reading from the wrong registry view. Pass KEY_WOW64_64KEY or KEY_WOW64_32KEY to the flags parameter). Using OpenKey() as context manager was introduced in python 2.6.

关于Python winreg 遍历子键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14350517/

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