python - Opens same registry twice? -


i trying installed programs of windows computer, therefore read out registry.

but somehow python reads 32bit programs out twice (even though give him registry entry)

here code snipped:

def get_programs(registry):     reg = connectregistry(none, hkey_local_machine)     programlist = []      key = openkey(reg, registry)     print(queryinfokey(key))     in range(0, queryinfokey(key)[0]):         programlist.append(enumkey(key, i))     closekey(key)     closekey(reg)     return programlist 

i call function this:

registry32bit = "software\wow6432node\microsoft\windows\currentversion\uninstall" registry64bit = "software\microsoft\windows\currentversion\uninstall"     programs32bit = get_programs(registry32bit) programs64bit = get_programs(registry64bit) 

why python open , read out same registry (for 32 bit) twice , return same list?

this appears work , uses @eryksun suggestion in comment below letting redirection happen , not explicitly referencing wow6432node registry key. central idea specify either key_wow64_32key or key_wow64_64key flag when opening uninstall subkey , let magic happen.

note: pythonized code in get_programs() function some. made shorter , more readable in opinion.

import sys _winreg import *  # assure registry handle objects context manager protocol implemented. if sys.version_info.major*10 + sys.version_info.minor < 26:     raise assertionerror('at least python 2.6 required.')  def get_programs(subkey, regbitview):     connectregistry(none, hkey_local_machine) hive:         openkey(hive, subkey, 0, regbitview | key_read) key:             return [enumkey(key, i) in range(queryinfokey(key)[0])]  uninstall_reg_key = r'software\microsoft\windows\currentversion\uninstall' programs32bit = get_programs(uninstall_reg_key, key_wow64_32key) programs64bit = get_programs(uninstall_reg_key, key_wow64_64key)  print('32-bit programs:\n{}'.format(programs32bit)) print('') print('64-bit programs:\n{}'.format(programs64bit)) 

many @eryksun clues , many implementation strategy suggestions.


Comments