在我们的产品中,需要确定当前用户登录 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)
对于不熟悉 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
| 归档时间: |
|
| 查看次数: |
29980 次 |
| 最近记录: |