Проверьте как 32-битный, так и 64-битный реестр, используя KEY_WOW64_32KEY
и KEY_WOW64_64KEY
. Кроме того, некоторые установщики будут использовать HKEY_CURRENT_USER
, хотя последний используется редко.
Обратите внимание: Pywin32 QueryValueEx
возвращает кортеж, первый элемент в этом кортеже содержит требуемую строку. QueryInfoKey
возвращает кортеж, первым элементом которого является общее количество подключей.
def foo(hive, flag):
aReg = winreg.ConnectRegistry(None, hive)
aKey = winreg.OpenKey(aReg, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall",
0, win32con.KEY_READ | flag)
count_subkey = winreg.QueryInfoKey(aKey)[0]
for i in range(count_subkey):
try:
asubkey_name = winreg.EnumKey(aKey, i)
asubkey = winreg.OpenKey(aKey, asubkey_name)
val = winreg.QueryValueEx(asubkey, "DisplayName")[0]
print(val)
except EnvironmentError:
continue
foo(win32con.HKEY_LOCAL_MACHINE, win32con.KEY_WOW64_32KEY)
foo(win32con.HKEY_LOCAL_MACHINE, win32con.KEY_WOW64_64KEY)
foo(win32con.HKEY_CURRENT_USER, 0)