10

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

ああ、それを理解しました。しかし、誰かがそれを行う別の方法を知っていれば、私はまだその答えを受け入れます!

4

5 に答える 5

10

エラーに飛び込むのではなく、エラーを回避することを好みます...

値の数を取得するには、_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して、関数と変数がどこから来ているかを明示します。後でコードをたどりやすくなります。

于 2013-07-10T06:05:08.397 に答える
7

Shouldn't EnumValue be of help here

# 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
于 2010-10-20T01:13:24.867 に答える