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