vbscript - VB 使用 WMI - 获取登录用户

标签 vbscript wmi

如何将 VB 脚本与 WMI 结合使用来获取登录用户的数量。我的安装只能有一名用户登录,如果有多个用户登录(通过使用 Citrix 的终端服务),则需要报告错误。我对 Citrix 不太了解,但 LogonType = 10Win32_LogonSession 似乎返回各种垃圾(端口 session 等)。我只需要用户...是否有任何 WMI 调用可以让我获取登录 Citrix 的用户数量?下面是我的 VB 代码片段:

Set objWMIService = _
    GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\cimv2") 
Set colComputer = _
    objWMIService.ExecQuery("Select * from Win32_LogonSession Where LogonType = 10")

谢谢! -jp

最佳答案

以下代码应该可以帮助您(对本地计算机使用 strComputer="."strComputer="MachineName"):

strComputer = "."   
Set objWMI = GetObject("winmgmts:" _ 
              & "{impersonationLevel=impersonate}!\\" _ 
              & strComputer & "\root\cimv2") 


Set colSessions = objWMI.ExecQuery _ 
    ("Select * from Win32_LogonSession Where LogonType = 10") 


If colSessions.Count = 0 Then 
   Wscript.Echo "No interactive users found" 
Else 
   WScript.Echo "RDP Sessions:"
   For Each objSession in colSessions 

     Set colList = objWMI.ExecQuery("Associators of " _ 
         & "{Win32_LogonSession.LogonId=" & objSession.LogonId & "} " _ 
         & "Where AssocClass=Win32_LoggedOnUser Role=Dependent" ) 
     For Each objItem in colList 
       WScript.Echo "Username: " & objItem.Name & " FullName: " & objItem.FullName 
     Next 
   Next 
End If 

原始代码在这里:

How to show logged on users? (Tek-Tips Forums)

这确实适用于 Windows 2003,我无法对更高版本做出任何保证。

关于vbscript - VB 使用 WMI - 获取登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/898757/

相关文章:

ms-access - 使用 Vbscript 将记录批量插入 Access

vbscript - 如何确保我的应用程序在调用 SendKeys 时保持焦点? (还有比使用 sleep 更好的方法吗?)

c# - 如何在 C# 中访问 WinRM

batch-file - WMI 批处理脚本返回无可用实例

vbscript - Vbscript 中的 3Dnew 是什么?

windows - 如何使用 VBS 脚本从 .ini 文件中删除一行

shell - WScript.Shell 和阻塞执行?

windows - 安排一个任务来监视某个进程的启动

Python win32print 打印机状态困惑

c++ - 在 Windows 中以编程方式区分 USB 软盘驱动器和 USB 闪存驱动器