【发布时间】:2011-09-23 15:05:15
【问题描述】:
我需要知道如何远程获取计算机主要用户的名称和域。我最好将主要用户定义为登录次数最多或一段时间内登录时间最长的用户。或者,如果这是不可能的,则作为当前/上次登录的用户。
目前,我在一个 Active Directory 中扫描 OU 中的所有计算机对象。然后我遍历它们,并尝试使用 WMI 获取用户的名称。
我查看 Win32_ComputerSystem 以查看 UserName 是否返回值。如果不是这种情况,我查看Win32_LogonSession 并获取所有等于 2 或 10 的 LogonTypes 的用户名。如果这没有返回或返回多个值,我丢弃结果并查看所有非系统的 Win32_Process进程并将主用户定义为运行大多数进程的用户。
我的方法有几个问题:
-
Win32_ComputerSystem- 用户名通常为空。 -
Win32_LogonSession经常返回多个值或不返回值。只能有 1 个主要用户。 - 查看
Win32_Process有点荒谬,因为这只会返回拥有最多进程的用户,很可能不是主要用户。 - 如果当前没有用户登录,则查看
Win32_Process不会返回任何值,并且这 3 个步骤都可能不会返回值。
我的 3 种方法可能会让我成为当前用户。有谁知道获得主要用户的方法?或者至少是获得电流的更好方法。不一定要使用 WMI。
谢谢
【问题讨论】: