Recorrer los valores o la clave de registro … _winreg Python

Cómo pasaría por todos los valores de una clave de registro de Windows usando el módulo Python _winreg. Tengo un código que hará lo que quiero, pero es para las subclaves de la clave de registro especificada.


Aquí está el código:

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 

Oh, lo descubrí. Pero, si alguien sabe de otra manera de hacerlo, ¡todavía aceptaré esa respuesta!

¿No debería EnumValue ser de ayuda aquí?

 # 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 

Prefiero evitar el error en lugar de sumergirme en él …

Use _winreg.QueryInfoKey para obtener el número de valores:

 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) 

Para obtener el número de claves, mismo método, índice diferente (segunda mitad de la pregunta original):

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

Nota: use import lugar de from ... import para que sea explícito de dónde provienen las funciones y variables. Hace que sea más fácil seguir el código más adelante en la vida.

Para iterar a través de las claves y los valores del registro, necesitaría los EnumKey() y EnumVlaue() del módulo _winreg . Tenga en cuenta que estos dos métodos toman el índice como un argumento y le proporcionarán la clave (o valor) solo para el índice dado. Por lo tanto, para obtener todas las claves (o valores), necesita incrementar el índice en uno y continuar hasta que WindowsError no se haya encontrado.

Esta publicación puede ayudarlo a obtener una comprensión detallada sobre el mismo. El enlace Github para el código se puede encontrar en la publicación.

para 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