使用WMI的VB - 登录用户

时间:2009-05-22 16:28:03

标签: vbscript wmi

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

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

谢谢! -jP

1 个答案:

答案 0 :(得分:3)

以下代码可以帮助您(使用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,我无法保证以后的版本。

相关问题