Прочитать одно значение ключа реестра на удаленной машине
Мне очень тяжело достичь этой, казалось бы, очень простой цели...
Я должен собрать значение одного ключа реестра на нескольких компьютерах, чтобы проверить, нужно ли исправлять проверенные машины новыми версиями программного обеспечения. Мне разрешено использовать Python 3 только в соответствии с политикой нашей компании (которая относится к наркотикам, но что я могу сделать).
я пытался использовать модуль winreg для подключения к удаленной машине (используя учетные данные, мы находимся в домене), но я сталкиваюсь снова и снова с
TypeError: Объект не является объектом PyHKEY (или рядом других проблем).
это кажется очень распространенной потребностью, и я был удивлен тем, что у меня возникли трудности с поиском каких-либо примеров для Python 3, которые я могу использовать, чтобы выяснить, что я делаю неправильно.
Буду очень признателен за любую помощь, которую кто-либо будет любезно оказать. Заранее спасибо.
1 ответ
Можете ли вы показать код, который вы пишете? Вы открыли ключ? Многие люди получают проблемы, так как они не открыли его? Это всего лишь предположение, надеюсь, это работает
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'SYSTEM\CurrentControlSet\Enum\Root')
winreg
модуль не позволяет вам делать то, что reg query
делает. Так, например, чтобы прочитать BuildLabEx
значение ключа reg вот что я делаю:
import subprocess
keyPath = "\\\\RemoteMachineName\\HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion"
output = subprocess.run(["reg",
"query",
keyPath,
"/v",
"BuildLabEx"],
capture_output=True,
text=True)
print(output.stdout)
Вышеуказанный фрагмент эквивалентен:
reg query "\\RemoteMachineName\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion" /v BuildLabEx