通过值或registry键循环.. _winreg Python

我将如何使用Python模块_winreg循环访问Windowsregistry项的所有 。 我有代码,将做我想要的,但它是指定的registry项的子项。


这是代码:

from _winreg import * t = OpenKey(HKEY_CURRENT_USER, r"PATH TO KEY", 0, KEY_ALL_ACCESS) try: i = 0 while True: subkey = EnumValue(t, i) print subkey i += 1 except WindowsError: # WindowsError: [Errno 259] No more data is available pass 

哦,算出来。 但是,如果有人知道另一种做法,我仍然会接受这个答案!

Solutions Collecting From Web of "通过值或registry键循环.. _winreg Python"

EnumValue不应该在这里帮助

 # list all values for a key try: count = 0 while 1: name, value, type = _winreg.EnumValue(t, count) print repr(name), count = count + 1 except WindowsError: pass 

我宁愿避免错误,而不是直接跳入其中

使用_winreg.QueryInfoKey获取值的数量:

 import _winreg key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, r'PATH\TO\KEY', 0, _winreg.KEY_READ) for i in xrange(0, _winreg.QueryInfoKey(key)[1]): print _winreg.EnumValue(key, i) 

为了得到Keys的数量,方法相同,索引不同(原题的后半部分):

 for i in xrange(0, _winreg.QueryInfoKey(key)[0]): print _winreg.EnumKey(key, i) 

注意:使用import来代替from ... import来使函数和变量来自哪里。 使得后面的代码更容易遵循。

要遍历注册表的键和值,您需要_winreg模块的EnumKey()EnumVlaue()方法。 请注意,这两个方法,将索引作为参数,并只会为给定的索引提供键(或值)。 因此,为了获得所有的键(或值),你需要增加一个索引,并继续,直到WindowsError没有遇到。

这篇文章可能会帮助你了解相同的细节。 代码的Github链接可以在帖子中找到。