Форум сайта python.su
0
Добрый день. Помогите разобраться с библиотекой winreg. Мне нужно получить список софта из HKLM/SOFTWARE реестра WINDOWS.
Получаю нужные ключи реестра:
HKLM = ConnectRegistry(None,HKEY_LOCAL_MACHINE)
SOFTWARE = OpenKey(HKLM,r“SOFTWARE”)
keys = EnumKey(SOFTWARE, index)
если оставить index, то не прокатывает. NameError: name ‘index’ is not defined
если подставить число, то print(keys) выведет соответствующий номер из списка
задача состоит в том, чтобы выгрузить все имеющиеся ключи, которые находятся в SOFTWARE в какой-нибудь list
Подскажите как это реализовать ?
Офлайн
253
#!/usr/bin/env python # -*- coding: cp1251 -*- """ работа с реестром Блин час убил из за уродов сочинивших такой интерфейс """ import _winreg def SetEnvironment(dic): u"""добавление (или замена) в переменной окружения path заданных ключей для windows""" keys = dic.keys() exist = [] for key in keys: try: with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", 0, _winreg.KEY_ALL_ACCESS) as k: val = str(_winreg.QueryValueEx(k, key)[0]) exist = val.split(';') except: pass for el in exist: if el not in dic[key]: dic[key].append(el) values = '' for el in dic[key]: values += el values += ';' with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", 0, _winreg.KEY_SET_VALUE) as k: _winreg.SetValueEx(k, key, 0, _winreg.REG_SZ, values) if __name__ == '__main__': dic = {'PATH1': ['C', 'q']} SetEnvironment(dic)
#!/usr/bin/env python # -*- coding: cp1251 -*- import _winreg aReg = _winreg.ConnectRegistry(None,_winreg.HKEY_LOCAL_MACHINE) aKey = _winreg.OpenKey(aReg, r"Software\Microsoft\Windows\CurrentVersion\Uninstall",0,_winreg.KEY_ALL_ACCESS) try: for index in xrange(10000): nm=_winreg.EnumKey(aKey, index) print nm except WindowsError: pass _winreg.CloseKey(aKey)
Отредактировано doza_and (Июнь 10, 2015 21:12:13)
Офлайн