gpt4 book ai didi

c# - 如何获取远程计算机的 "primary"用户

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:57 25 4
gpt4 key购买 nike

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

目前,我扫描 Active Directoy 以查找 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。

谢谢

最佳答案

如果您在远程计算机上具有管理员权限和共享访问权限您可以使用计算机管理并选择连接到另一台计算机并查看该计算机上有哪些用户和组。或者您可以使用 TS Remote Administration 或 Remote Desktop(如果远程计算机具有该功能)。

使用 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 名称,其中之一是用户名。

关于c# - 如何获取远程计算机的 "primary"用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7531121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com