Façons de vérifier si l'utilisateur est actif sur la machine distante avant le RDP

24

Nous avons une machine Windows XP commune qui est partagée entre plusieurs utilisateurs. Tous utilisent une connexion de domaine commune pour y rdp. Maintenant, le problème est que nous finissons parfois par reprendre la session active d'autres personnes sans qu'aucune des parties ne soit avertie (aucun avertissement n'est émis car nous utilisons la même connexion).

Existe-t-il un moyen de tester si l'utilisateur actuellement connecté sur la machine distante est actif (terminal verrouillé?) Ou non?

Nous ne pouvons pas utiliser VNC ou LogMeIn ou d'autres utilitaires de partage de bureau pour des raisons de sécurité (bloqués par l'informatique).

Je suis en train de développer un utilitaire de test rapide (C #, C ++, scripts, etc.).

Modifier:

  1. Comme nous utilisons la même connexion - les utilisateurs ne se déconnectent pas, ils déconnectent ou verrouillent simplement le terminal.
YetAnotherUser
la source
2
Je voudrais savoir comment faire exactement la même chose mais dans un environnement Win7.
Darius
@Darius, vient de trouver la solution à cela. Je ne l'ai pas testé sur W7 mais j'espère que cela fonctionne aussi pour vous.
YetAnotherUser
@Darius & YetAnotherUser: J'ai répondu ci-dessous: superuser.com/a/822743/430
Kevin Worthington

Réponses:

31

Nous pouvons utiliser qwinstapour Q uery WIN Dows STA tion et obtenir une liste de toutes les sessions actives.

Statela colonne indique si un utilisateur est actif ou non. Cela nécessite un accès administrateur sur la machine cible.

Je l'ai sur TechTalkz: Comment afficher / déconnecter les sessions de bureau à distance de la ligne de commande

entrez la description de l'image ici

YetAnotherUser
la source
1
+1 C'est pratique. J'ai essayé de comprendre ce que j'ai utilisé dans le passé, mais je n'ai pas pu le comprendre. Je pense que c'était peut-être le cas psexec \\COMPUTERNAME net session. Vous pouvez également utiliser tsdisconpour vous déconnecter.
paradroid
2

Semblable à la réponse acceptée, vous pouvez également utiliser Query.execomme ceci:

quser /server:<COMPUTERNAME>

Il en résultera les éléments suivants:

entrez la description de l'image ici

Felix D.
la source
1
L'accès est refusé à partir d'une invite de commande élevée. J'utilise également un compte d'administrateur de domaine.
Shiv
A fonctionné très bien pour moi vérifier si moi RDP-ing démarrerait quelqu'un sur un serveur Win 2k8 R2. Le statut était "Disc" (déconnecté), donc je peux RDP en toute sécurité.
Adambean
1

Créer un fichier BAT génère un fichier sur un partage indiquant que l'ordinateur est en cours d'utilisation. Lorsqu'un utilisateur se connecte, il s'exécute et crée ce fichier. Lorsqu'un utilisateur se déconnecte (cela peut être fait par script GP), il supprime le fichier. Vérifiez le partage de ce fichier avant de vous connecter

Canadian Luke REINSTATE MONICA
la source
1
Je suis désolé d'avoir dû mentionner que - comme nous utilisons la même connexion - les utilisateurs ne se déconnectent pas, ils se contentent de déconnecter ou de verrouiller le terminal.
YetAnotherUser
1

Vous pouvez utiliser la commande NET SEND pour envoyer un message à la machine pour voir si quelqu'un s'y trouve. Cela peut être rendu plus facile en utilisant une application GUI - le lien ci-dessous est le premier gratuit que j'ai trouvé en effectuant une recherche sur le Web, donc il est fourni sans aucune approbation spécifique.

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

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

Linker3000
la source
+1 - Net Send est une bonne option. Cela oblige un autre utilisateur à répondre pour confirmer qu'il utilise la machine, et il faudrait inutilement attendre 4 à 5 minutes avant de supposer qu'elle n'est pas utilisée. De plus, le service Messenger doit être exécuté sur tous les systèmes, ce qui n'est pas vrai dans notre cas.
YetAnotherUser
Il convient de noter que NET SEND était une réponse correcte à la question posée, réfringant à Windows XP, mais ne l'est plus pour les versions actuelles de Windows, car SEND a été supprimé de NET pour des problèmes d'abus flagrants.
Je suis avec Monica le
1

Autrement:

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

(testé sur Windows 7)

Kevin Worthington
la source
Par curiosité, pourquoi lorsque j'essaie ceci, j'obtiens le message d'erreur "Accès refusé"?
Darius
Vous ne disposez peut-être pas de privilèges d'administrateur sur l'ordinateur distant.
Kevin Worthington
Je suis un administrateur net, je pense que je devrais mais vous m'avez indiqué la bonne direction ....
Darius
C'est la seule réponse répertoriée qui a donné la possibilité de spécifier quel utilisateur se connecter à la machine distante. Les autres semblent fonctionner uniquement si vous êtes dans le même domaine et que vous exécutez en tant qu'utilisateur avec accès.
LeBleu
0

Tout comme pour info, je sais que cela a plus d'un an, mais même si quelqu'un a des droits d'administrateur de domaine, il existe des politiques GPO qui pourraient empêcher certains comptes d'administrateur (domaine, entreprise, etc.) de se connecter à distance à une machine.

Il s'agit d'aider à protéger les machines qui font partie d'un emplacement distant d'être administrées à distance par quelqu'un plus haut dans la structure AD.

Vous pouvez vérifier s'il est refusé en consultant vos rapports GPO pour la machine locale sous le

                  gpreport /h report.html

à partir d'une invite de commande d'administration.

Norme
la source
1
6 ans, mais qui compte
mic84