Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 3, 2015 14:49:20

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

winreg. Чтение реестра на удалённой машине.

Добрый день, камрады (или так уже не пишут?) )

Мне надо с удалённых машин в локальной сети считать один ключ реестра.

считать у себя проблем не вызывает, к примеру

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()

А задача состоит в том чтобы узнать есть ли такой параметр у машин в диапазоне 10,10,10,1-10,10,10,255.

Ещё не маловажный нюанс.. Надо делать это под забитой учёткой. (не с той, с которой производится запуск программы)

То есть. Запускаем программу, вбиваем учётку доменадмина, сегмент сети и она пробегается по всем машинам и смотрит ключик, выводя тех, у кого его нет.

Крутил вот это
winreg.ConnectRegistry(computer_name, key)
но что-то без профита(

Помогите плиз

Офлайн

#2 Апрель 6, 2015 09:39:39

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

winreg. Чтение реестра на удалённой машине.

Коллеги, есть варианты в какую сторону смотреть?

Может как-то os покрутить? Только как прокинуться в удалённое окружение, да ещё и под вбиваемой учёткой?

Офлайн

#3 Апрель 6, 2015 21:44:12

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

winreg. Чтение реестра на удалённой машине.

В ОС 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

Офлайн

#4 Апрель 7, 2015 10:25:56

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

winreg. Чтение реестра на удалённой машине.

Спасибо за ответ!

А как сделать такой запрос к регистру, не под своими учётными данными, а под вводимыми?

Рабочая учётка не является доменадмином, потому её хотелось бы вводить при выполнении программы.

Ещё вопрос о службе.. Она не у нас по групповым политикам отключена по секьюрным соображениям и включать бы её не хотелось(

Может можно как-то так:

прокинуться в удалённое окружение и там выполнить, к примеру:

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)

Офлайн

#5 Апрель 7, 2015 16:36:09

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

winreg. Чтение реестра на удалённой машине.

Пробуйте 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
Или через win32
http://code.activestate.com/recipes/360649-remote-shutdown-on-windows/

Отредактировано Kasta_neda (Апрель 8, 2015 08:15:56)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version