Loop through values or registry key.. _winreg Python
Solution 1
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
Solution 2
I prefer to avoid the error instead of diving right into it ...
Use _winreg.QueryInfoKey to get the number of values:
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)
To get the number of Keys, same method, different index (second half of original question):
for i in xrange(0, _winreg.QueryInfoKey(key)[0]):
print _winreg.EnumKey(key, i)
Note: use import
instead of from ... import
to make it explicit where functions and variables are coming from. Makes it easier to follow code later in life.
Solution 3
for 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
Zac Brown
Computer geek, entrepreneur, soccer freak, Founder & CEO TeraTech Mobile, avid cyclist. That is all.
Updated on July 03, 2022Comments
-
Zac Brown almost 2 years
How would I loop through all the values of a Windows Registry Key using the Python module _winreg. I have code that will do what I want, but it is for the subkeys of the specified registry key.
Here Is The Code:
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, figured it out. But, if anyone knows of another way to do it, I'll still accept that answer!