【问题标题】:How to use Python to get local admins from a computer on the Network?如何使用 Python 从网络上的计算机获取本地管理员?
【发布时间】:2010-01-12 07:23:27
【问题描述】:

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

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,这是我在网上看到的大部分代码。

谢谢!

【问题讨论】:

    标签: python active-directory winreg


    【解决方案1】:

    这个操作的数据会在之后被操纵吗?如果这是人工扫描,那么您就想多了。

    只需使用网络扫描器为您处理,例如this one

    【讨论】:

      【解决方案2】:

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

      回到我玩 COM 和 windows 注册表并遇到它的时候。自从我看它之后,它似乎已经改进了一点。

      这里是 Windows 参考文档。 WMI Reference

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-03
        • 2013-08-17
        • 2012-10-28
        • 1970-01-01
        • 2014-04-15
        • 1970-01-01
        • 2011-11-04
        • 1970-01-01
        相关资源
        最近更新 更多