读取远程计算机上的单个注册表项值

时间:2009-10-20 16:19:18

标签: python windows python-3.x winreg remote-registry

我很难实现这个看似非常简单的目标...

我必须在几台计算机上收集单个注册表项的值,以便审核扫描的计算机是否需要使用较新版本的软件进行修补。我只允许根据公司政策使用python 3(这是关于毒品的,但我能做些什么)。

我一直在研究使用winreg模块连接到远程计算机(使用凭据,我们在域上)但我一次又一次地面对

  

TypeError:该对象不是PyHKEY对象   (或许多其他问题。)

这似乎是一个非常普遍的需求,我很惊讶我找到了python 3的任何例子,我可以用它来弄清楚我做错了什么。

任何人都愿意给予的任何帮助将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:1)

你能展示你正在写的代码吗?你打开钥匙了吗?很多人确实遇到了问题,因为他们没有打开它?这只是猜测,希望它有效

key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'SYSTEM\CurrentControlSet\Enum\Root')

答案 1 :(得分:0)

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