2009-07-06 10 views
8

Estoy tratando de encontrar una manera de obtener una lista de sesiones de Windows? Necesito la misma información que la que se muestra en el Administrador de tareas en la pestaña Usuario. Necesito saber si el usuario está activo o no y si ha iniciado sesión en la sesión de Escritorio remoto.¿Cómo obtener una lista de sesiones de Windows?

¿Alguna idea sobre cómo hacer eso con C#/Windows XP Pro?

Respuesta

4

Creo que tendrá que usar P/Invoke para recuperar esta información.

Las API relevantes están documentadas en this MSDN page.

8

Como punto de partida se puede obtener una lista de usuarios conectados mediante la ejecución del comando

qwinsta 

Desde el símbolo del sistema.

Esto le dará una salida como

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

y mostrará una lista de todas las sesiones remotas.

2

No es necesario utilizar Pinvoke. WMI lo hace, y bueno: "seleccione Nombre, SessionId de Win32_Process" en el espacio de nombres de root \ cimv2. Y, se puede llamar desde una máquina remota. Más simple. Agregue una cláusula where en la selección para ajustar con precisión lo que recibe.

+0

Esto no devuelve la misma información que en el Administrador de tareas en la pestaña Usuario. Devuelve un identificador entero de la identificación de la sesión, no el nombre de usuario o SID de la cuenta en la que se creó el proceso. – codekaizen

Cuestiones relacionadas