Форум сайта python.su
0
Добрый день, камрады (или так уже не пишут?) )
Мне надо с удалённых машин в локальной сети считать один ключ реестра.
считать у себя проблем не вызывает, к примеру
import winreg s= winreg.OpenKey(winreg.HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer") try: i = 0 while 1: name, value, type = winreg.EnumValue(s, i) print (name, value, type) i += 1 except WindowsError: print()
Офлайн
0
Коллеги, есть варианты в какую сторону смотреть?
Может как-то os покрутить? Только как прокинуться в удалённое окружение, да ещё и под вбиваемой учёткой?
Офлайн
6
В ОС Windows встроен механизм редактирования реестра удаленного компьютера. Чтобы воспользоваться им для работы с удаленным реестром вы должны быть членом группы локальных администраторов на удаленной машине.
Второе необходимое условие — запущенная служба Удаленный реестр. Её нужно заранее включить на удаленной машине (Панель управления > Администрирование > Службы), либо включить службу удаленно.
Полезным было бы добавить, что служба «Удаленный реестр» имеет имя RemoteRegistry. Включить ее можно командой net start RemoteRegistry или sc start RemoteRegistry. На удаленном компьютере команду можно выполнить при помощи psexec.
import _winreg #import win32com.client host = "san" # remote MACHINE or local key = _winreg.ConnectRegistry(host, _winreg.HKEY_LOCAL_MACHINE) hkey = _winreg.OpenKey(key, r"Software\Microsoft\Windows\CurrentVersion\Uninstall") num = _winreg.QueryInfoKey(hkey)[0] print "*** Found %d Software ***" % num try: for x in range(1000): uninstall = _winreg.EnumKey(hkey, x) skey = _winreg.OpenKey(key,"Software\Microsoft\Windows\CurrentVersion\Uninstall\%s" % uninstall) try: software = _winreg.QueryValueEx(skey, "DisplayName")[0] print "%s-%s" % (uninstall, software) except: pass except: pass
Офлайн
0
Спасибо за ответ!
А как сделать такой запрос к регистру, не под своими учётными данными, а под вводимыми?
Рабочая учётка не является доменадмином, потому её хотелось бы вводить при выполнении программы.
Ещё вопрос о службе.. Она не у нас по групповым политикам отключена по секьюрным соображениям и включать бы её не хотелось(
Может можно как-то так:
прокинуться в удалённое окружение и там выполнить, к примеру:
import os os.popen('regedit.exe -ea C:\Font.reg "HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts"') print open('C:\Font.reg', 'r').read()
Отредактировано varrt (Апрель 7, 2015 10:27:02)
Офлайн
6
Пробуйте WMI, или в связке WMI+_winreg
типа этого, но локальный я так просмотрел а вот удаленный не удалось, но пробуйте, может я просто что то не так делал
import _winreg import wmi c = wmi.WMI(computer="192.168.1.4", user="admin", password="pass",namespace="root/default").StdRegProv result, names = c.EnumKey ( hDefKey=_winreg.HKEY_LOCAL_MACHINE, sSubKeyName="SYSTEM\ControlSet001\Services\MRxDAV" ) for item in names: print item
Отредактировано Kasta_neda (Апрель 8, 2015 08:15:56)
Офлайн