Python code to read registry

Documentation says that EnumKey returns string with key’s name. You have to explicitly open it with _winreg.OpenKey function. I’ve fixed your code snippet:

from _winreg import *

aKey = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
aReg = ConnectRegistry(None, HKEY_LOCAL_MACHINE)

print(r"*** Reading from %s ***" % aKey)

aKey = OpenKey(aReg, aKey)
for i in range(1024):
    try:
        asubkey_name = EnumKey(aKey, i)
        asubkey = OpenKey(aKey, asubkey_name)
        val = QueryValueEx(asubkey, "DisplayName")
        print(val)
    except EnvironmentError:
        break

Please note, that not every key has “DisplayName” value available.

Leave a Comment