Martin
Martin

Reputation: 40573

How to get a list of Windows sessions?

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 is active or not and if s/he is logged on in the Remote Desktop session.

Any idea on how to do that with C# / Windows XP Pro?

Upvotes: 10

Views: 46602

Answers (5)

JRrelyea
JRrelyea

Reputation: 301

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.

Upvotes: 2

xpmatteo
xpmatteo

Reputation: 11408

Another way is to use the Logonsessions utility from Sysinternals:

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

Upvotes: 4

Kevin Montrose
Kevin Montrose

Reputation: 22571

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

Upvotes: 5

pjp
pjp

Reputation: 17629

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.

Upvotes: 13

Reed Copsey
Reed Copsey

Reputation: 564333

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

The relevant APIs are documented in this MSDN page.

Upvotes: 4

Related Questions