VB используя WMI - войти в систему пользователей - PullRequest
3 голосов
/ 22 мая 2009

Как я могу использовать VB-скриптинг с WMI, чтобы получить количество зарегистрированных пользователей. В моей установке может быть только один пользователь, вошедший в систему, и он должен сообщить об ошибке, если в систему вошли несколько пользователей (через службу терминалов с использованием 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 Ответ

3 голосов
/ 22 мая 2009

Следующий код должен помочь вам (используйте 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 

Оригинальный код здесь:

Как показать вошедших в систему пользователей? (Форумы Tek-Tips)

Это работало с Windows 2003, я не могу дать никаких гарантий относительно более поздней версии.

...