【问题标题】:How to get "primary" user of a remote computer如何获取远程计算机的“主要”用户
【发布时间】:2011-09-23 15:05:15
【问题描述】:

我需要知道如何远程获取计算机主要用户的名称和域。我最好将主要用户定义为登录次数最多或一段时间内登录时间最长的用户。或者,如果这是不可能的,则作为当前/上次登录的用户。

目前,我在一个 Active Directory 中扫描 OU 中的所有计算机对象。然后我遍历它们,并尝试使用 WMI 获取用户的名称。 我查看 Win32_ComputerSystem 以查看 UserName 是否返回值。如果不是这种情况,我查看Win32_LogonSession 并获取所有等于 2 或 10 的 LogonTypes 的用户名。如果这没有返回或返回多个值,我丢弃结果并查看所有非系统的 Win32_Process进程并将主用户定义为运行大多数进程的用户。

我的方法有几个问题:

  1. Win32_ComputerSystem - 用户名通常为空。
  2. Win32_LogonSession 经常返回多个值或不返回值。只能有 1 个主要用户。
  3. 查看Win32_Process 有点荒谬,因为这只会返回拥有最多进程的用户,很可能不是主要用户。
  4. 如果当前没有用户登录,则查看 Win32_Process 不会返回任何值,并且这 3 个步骤都可能不会返回值。

我的 3 种方法可能会让我成为当前用户。有谁知道获得主要用户的方法?或者至少是获得电流的更好方法。不一定要使用 WMI。

谢谢

【问题讨论】:

    标签: c# wmi


    【解决方案1】:

    如果您在远程计算机上具有管理员权限并具有共享访问权限 您可以使用计算机管理并选择 连接到其他计算机并查看该计算机上的用户和组。 或者,如果远程计算机具有该功能,您可以使用 TS 远程管理或远程桌面。

    使用psexec.exe (www.sysinternals.com) 在远程电脑上运行命令:

    psexec \\pc1 net user | find /i "Steve" 
    psexec \\pc1 c:\tool\psloggedon | find /i "Steve" 
    

    1) 查找 John Black 在 PC1 上是否有帐户。

    2) 查找他当前是否登录。 使用psloggedon.exe 认为 uis 是另一个 SysInternals 工具。

    也检查一下:http://www.wisesoft.co.uk/scripts/vbscript_display_username_of_user_on_a_remote_computer.aspx

    此外,如果您想使用远程计算机 IP 在远程计算机上查找当前登录用户的用户名,请转到命令行输入 nbtstat -A <IP of remote computer> 这将返回计算机上注册的所有 NetBIOS 名称,其中之一是用户名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多