Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 10, 2015 21:03:22

Sgtmahoney
Зарегистрирован: 2015-06-10
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

winreg вопрос по работе с реестром

Добрый день. Помогите разобраться с библиотекой 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

Подскажите как это реализовать ?

Офлайн

#2 Июнь 10, 2015 21:11:47

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

winreg вопрос по работе с реестром

#!/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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version