确定用户登录 Windows 的时间

Her*_*shi 9 windows

在我们的产品中,需要确定当前用户登录 Windows(特别是 Vista)的时间。似乎没有直接的 API 函数可以实现这一点,而且我找不到与 WMI 相关的任何内容(尽管我不是 WMI 专家,所以我可能错过了一些东西)。

有任何想法吗?

小智 7

您可以简单地使用 CMD 或 PowerShell 使用以下命令查询用户:

C:\> query user
USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
john                  rdp-tcp#56          9  Active          .  5/3/2020   10:19 AM
max                   rdp-tcp#5          30  Active    5+23:42  9/4/2020   7:31  PM
yee                                      35  Disc         6:41  10/14/2020 6:37  PM
mohammd               rdp-tcp#3          37  Active          .  10/15/2020 7:51  AM
Run Code Online (Sandbox Code Playgroud)


Nic*_*lay 4

对于不熟悉 WMI 的人(比如我),这里有一些链接:

下面是从 VBS 查询 Win32_Session 的示例:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set sessions = objWMIService.ExecQuery _
   ("select * from Win32_Session")

For Each objSession in sessions
   Wscript.Echo objSession.StartTime
Next
Run Code Online (Sandbox Code Playgroud)

它为我的个人计算机发出 6 个会话警报,也许您可​​以按 LogonType 进行过滤以仅列出真实(“交互式”)用户。我不明白如何选择“当前用户”的会话。

[编辑]这是谷歌对您的问题的结果:http://forum.sysinternals.com/forum_posts.asp ?TID=3755