2

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

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

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

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

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

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

4

2 回答 2

1

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

key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'SYSTEM\CurrentControlSet\Enum\Root')
于 2009-10-23T07:33:38.170 回答
0

winreg模块不允许您执行该reg query操作。因此,例如要读取BuildLabExreg 键值,这就是我所做的:

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
于 2019-03-06T19:28:36.450 回答