Formas de verificar si el usuario está activo en la máquina remota antes de RDP

24

Tenemos una máquina común de Windows XP que se comparte entre varios usuarios. Todos ellos usan un inicio de sesión de dominio común para rdp en él. Ahora el problema es que algunas veces terminamos asumiendo la sesión activa de otras personas sin que ninguna de las partes sea advertida (no se emite ninguna advertencia ya que usamos el mismo inicio de sesión).

¿Hay alguna forma de probar si el usuario conectado actualmente en la máquina remota está activo (terminal bloqueado) o no?

No podemos usar VNC o LogMeIn u otras utilidades para compartir escritorio por razones de seguridad (bloqueadas por TI).

Estoy bien desarrollando alguna utilidad de prueba rápida (C #, C ++, secuencias de comandos, etc.) también.

Editar:

  1. Como estamos usando el mismo inicio de sesión, los usuarios no están cerrando sesión, simplemente desconectan o bloquean el terminal.
YetAnotherUser
fuente
2
Me gustaría saber cómo hacer exactamente lo mismo pero en el entorno Win7.
Darius
@Darius, acabo de encontrar la solución a esto. No lo he probado en W7, pero espero que esto también funcione para usted.
YetAnotherUser
@Darius & YetAnotherUser: respondí a continuación: superuser.com/a/822743/430
Kevin Worthington

Respuestas:

31

Podemos utilizar qwinstaa Q uery WIN dows STA ción y obtener una lista de todas las sesiones activas.

StateLa columna muestra si un usuario está activo o no. Esto requiere acceso de administrador en la máquina de destino.

Lo tengo en TechTalkz: Cómo ver / desconectar sesiones de escritorio remoto de la línea de comandos

ingrese la descripción de la imagen aquí

YetAnotherUser
fuente
1
+1 Eso es útil. He estado tratando de descubrir lo que he usado en el pasado, pero no pude resolverlo. Creo que pudo haber sido psexec \\COMPUTERNAME net session. También puedes usar tsdisconpara desconectar.
paradroid
2

Similar a la respuesta aceptada, también puede usar Query.exeasí:

quser /server:<COMPUTERNAME>

Esto resultará en lo siguiente:

ingrese la descripción de la imagen aquí

Felix D.
fuente
1
Obtener acceso es denegado desde un símbolo del sistema elevado. También estoy usando una cuenta de administrador de dominio.
Shiv
Funcionó bien para mí comprobar si mi RDP-ing arrancaría a alguien desde un servidor Win 2k8 R2. El estado era "Disco" (desconectado), por lo que puedo RDP en forma segura.
Adambean
1

Cree un archivo BAT que genere un archivo en un recurso compartido que indique que la computadora está en uso. Cuando un usuario inicia sesión, se ejecuta y crea ese archivo. Cuando un usuario cierra sesión (se puede hacer mediante GP script), elimina el archivo. Verifique el recurso compartido para ese archivo antes de conectarse

El canadiense Luke REINSTATE MONICA
fuente
1
Lo siento, debería haber mencionado que, como estamos usando el mismo inicio de sesión, los usuarios no están cerrando sesión, simplemente desconectan o bloquean el terminal.
YetAnotherUser
1

Puede usar el comando ENVIAR NETO para enviar un mensaje a la máquina para ver si hay alguien en él. Esto se puede hacer más fácil mediante el uso de una aplicación GUI: el siguiente enlace es el primero gratuito que encontré al hacer una búsqueda en la Web, por lo que viene sin ningún respaldo específico.

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/net_send.mspx

http://www.fomine.com/netsend.html

Linker3000
fuente
+1 - Net Send es una buena opción. Requiere que otro usuario responda para confirmar que está usando la máquina, y uno tendría que esperar innecesariamente de 4 a 5 minutos antes de asumir que no se está utilizando. Además, requiere que el servicio de Messenger se ejecute en todos los sistemas, lo cual no es cierto en nuestro caso.
YetAnotherUser
Cabe señalar que NET SEND fue una respuesta correcta a la pregunta formulada, refiriéndose a Windows XP, pero ya no es para las versiones actuales de Windows, ya que SEND se ha eliminado de NET por problemas de abuso evidente.
Estoy con Mónica el
1

De otra manera:

wmic.exe /node:<computername or IP address> computersystem get username

(probado en Windows 7)

Kevin Worthington
fuente
Por curiosidad, ¿por qué cuando intento esto aparece el mensaje de error "Acceso denegado"?
Darius
Es posible que no tenga privilegios de administrador en la computadora remota.
Kevin Worthington
Soy un administrador de red, creo que debería, pero usted me señaló en la dirección correcta ...
Darius
Esta es la única respuesta en la lista que dio la opción de especificar a qué usuario conectarse a la máquina remota. Los demás parecen funcionar solo si usted está en el mismo dominio y se está ejecutando como el usuario con acceso.
LeBleu
0

Al igual que para su información, sé que esto tiene más de un año, pero incluso si alguien tiene derechos de administrador de dominio, existen políticas de GPO que podrían bloquear el inicio de sesión remota de ciertas cuentas de administrador (dominio, empresa, etc.) en una máquina.

Esto es para ayudar a proteger las máquinas que forman parte de una ubicación remota de ser administradas de forma remota por alguien más arriba en la estructura AD.

Puede verificar si está denegado al revisar sus informes de GPO para la máquina local debajo de

                  gpreport /h report.html

desde un símbolo del sistema administrativo.

Norma
fuente
1
6 años, pero quién está contando
mic84