How to get a list of Windows sessions?

前端 未结 5 1973
栀梦
栀梦 2021-01-02 15:03

I am trying to find a way to get a list of Windows sessions? I need the same information as the one displayed in the Task Manager on the User tab. I need to know if the user

相关标签:
5条回答
  • 2021-01-02 15:12

    I believe you'll need to use P/Invoke to retrieve this information.

    The relevant APIs are documented in this MSDN page.

    0 讨论(0)
  • 2021-01-02 15:15

    As a starting point you can get a list of users logged on by running the command

    qwinsta
    

    From the command prompt.

    This will give output like

    C:\WINDOWS\system32>qwinsta
    SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
    >console           me                       0  Active  wdcon
    rdp-tcp                                 65536  Listen  rdpwd
    

    and will list any remote sessions.

    0 讨论(0)
  • 2021-01-02 15:16

    Use LsaEnumerateLogonSessions via P/Invoke. You'll also need LsaFreeReturnBuffer to cleanup after enumerating.

    0 讨论(0)
  • 2021-01-02 15:32

    You do not need to use Pinvoke. WMI does it, and well: "select Name, SessionId from Win32_Process" in the root\cimv2 namespace. And, it can be called from a remote machine. Simpler. Add in a where clause in the select to fine tune what you get back.

    0 讨论(0)
  • 2021-01-02 15:33

    Another way is to use the Logonsessions utility from Sysinternals:

    http://technet.microsoft.com/en-us/sysinternals/bb896769.aspx

    0 讨论(0)
提交回复
热议问题