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

时间:2010-01-12 07:23:27

标签: python active-directory winreg

我需要获取公司中所有在其计算机上拥有本地管理员权限的人员的列表。我们在每台机器上都有一个名为“管理员”的小组。我可以通过以下命令获取活动目录中所有计算机的列表:

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

如何将这些结合起来以获得我需要的东西?这些会一起工作吗?这是解决这个问题的最好方法吗?一旦我开始工作,我就可以想出把它写到一个文件中并添加异常,就好像计算机不在网络上它写的那样,然后移动到下一台PC上。也许使用win32security?

我不知道要使用哪个注册表项,即使它可以工作。我今天花了大约5个小时,我还在学习Python。我不知道VB,这是我在网上看到的大部分代码。

谢谢!

2 个答案:

答案 0 :(得分:0)

此操作的数据是否会被操作?如果这是一个人类会看到的手动扫描,那么你就会过度思考它。

只需使用网络扫描程序即可为您处理,例如this one

答案 1 :(得分:0)

我不确定细节,但听起来你可能想看一下WMI包。

当我正在玩COM和Windows注册表并跑过它时。看起来它看起来有所改善。

这是Windows参考文档。 WMI Reference