循环遍历值或注册表项。。_winregPython

2024-04-27 14:06:19 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用Python模块winreg遍历Windows注册表项的。我有代码可以做我想做的事情,但它是针对指定注册表项的子项的。


代码如下:

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

哦,想出来了。但是,如果有人知道另一种方法,我还是会接受这个答案!


Tags: 模块key代码fromimport注册表windowscurrent
3条回答

对于python 3

import winreg
hKey = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, "Local Settings\\Software\\Microsoft\\Windows\\Shell\\MuiCache")


try:
    count = 0
    while 1:
        name, value, type = winreg.EnumValue(hKey, count)
        print (name),
        count = count + 1
except WindowsError as err:
    print(err)
    pass

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)

要获取密钥数、相同方法、不同索引(原始问题的后半部分):

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

注意:使用import而不是from ... import来明确函数和变量的来源。使以后的生活更容易遵循代码。

相关问题 更多 >