如何使用Python从网络上的计算机获取本地管理员? [已关闭]

问题描述 投票:0回答:2

我需要获取公司中拥有计算机本地管理员权限的所有人员的列表。我们在每台机器上都有一个名为“管理员”的组。我可以通过以下方式从 Active Directory 获取所有计算机的列表:

import active_directory

for computer in active_directory.search ("objectCategory='Computer'"):
  print computer.displayName

我想我需要获取每台计算机的名称并将其反馈回来。我在想也许可以读取每台计算机上的远程注册表并查找 SID - 据说 SID 'S-1-5-domain-500' 会给出我是计算机上本地管理员的人员列表。我做到了:

import _winreg
COMPUTER_NAME = "FakeComputerName"
KEY_PATH = r"System\CurrentControlSet\Control\ComputerName\ComputerName"
HKLM_remote = _winreg.ConnectRegistry (r"\\%s" % COMPUTER_NAME, _winreg.HKEY_LOCAL_MACHINE)
hKeyRemote = _winreg.OpenKey (HKLM_remote, KEY_PATH, 0, _winreg.KEY_READ)
value, type = _winreg.QueryValueEx (hKeyRemote, "ComputerName")
print "Remote computer name is", value
Remote computer name is FakeComputerName

如何将这些结合起来以获得我需要的东西?这些会一起工作吗?这是解决这个问题的最佳方法吗?一旦我让它工作,我就可以弄清楚将其写入文件并添加异常,例如如果计算机不在网络上,它会写入该异常,然后移动到下一台电脑上。也许使用 win32security?

我不知道要使用什么注册表项,也不知道它是否有效。我今天花了大约 5 个小时在这上面,而且我仍在学习 Python。我不懂 VB,这是我在网上看到的大部分代码。

python active-directory winreg
2个回答
0
投票

这个操作的数据之后会被操作吗?如果这是由人类查看的手动扫描,那么您就想太多了。

只需使用网络扫描仪即可为您处理,例如这个


0
投票

我不确定详细信息,但听起来您可能想看看 WMI 包。

当我玩 COM 和 Windows 注册表并遇到它时。自从我看到它以来,它看起来已经有所改进了。

这里是 Windows 参考文档。 WMI 参考

© www.soinside.com 2019 - 2024. All rights reserved.