Überprüft, ob der Benutzer auf dem Remote-Computer aktiv ist, bevor RDP ausgeführt wird


24

Wir haben einen gemeinsamen Windows XP-Computer, der von mehreren Benutzern gemeinsam genutzt wird. Alle verwenden ein gemeinsames Domain-Login, um sich einzuloggen. Das Problem ist nun, dass wir manchmal die aktive Sitzung anderer Personen übernehmen, ohne dass eine der Parteien gewarnt wird (es wird keine Warnung ausgegeben, da wir dasselbe Login verwenden).

Gibt es eine Möglichkeit zu testen, ob der aktuell angemeldete Benutzer auf dem Remotecomputer aktiv ist (Terminal gesperrt?) Oder nicht?

Aus Sicherheitsgründen (von der IT blockiert) können wir weder VNC noch LogMeIn oder andere Dienstprogramme für die Desktopfreigabe verwenden.

Ich bin in Ordnung, einige schnelle Test-Dienstprogramme (C #, C ++, Scripting usw.) zu entwickeln.

Bearbeiten:

  1. Da wir die gleiche Anmeldung verwenden, melden sich Benutzer nicht ab, sondern trennen oder sperren lediglich das Terminal.

2
Ich würde gerne herausfinden, wie man genau dasselbe macht, aber in der Win7-Umgebung.
Darius

@Darius, habe gerade die Lösung dafür gefunden. Ich habe es noch nicht auf W7 getestet, hoffe aber, dass es auch für Sie funktioniert.
YetAnotherUser

@Darius & YetAnotherUser: Ich antwortete unten: superuser.com/a/822743/430
Kevin Worthington

Antworten:


31

Wir können qwinstamit Q uery WIN dows STA tion eine Liste aller aktiven Sessions erhalten.

StateSpalte zeigt, ob ein Benutzer aktiv ist oder nicht. Dies erfordert Administratorzugriff auf dem Zielcomputer.

Verstanden auf TechTalkz: So zeigen Sie Remotedesktopsitzungen in der Befehlszeile an oder trennen sie

Bildbeschreibung hier eingeben


1
+1 Das ist praktisch. Ich habe versucht herauszufinden, was ich in der Vergangenheit verwendet habe, aber ich konnte es nicht herausfinden. Ich denke, es könnte gewesen sein psexec \\COMPUTERNAME net session. Sie können auch tsdisconzum Trennen verwenden.
Paradroid

2

Ähnlich wie bei der akzeptierten Antwort können Sie auch folgendermaßen vorgehen Query.exe:

quser /server:<COMPUTERNAME>

Dies führt zu folgenden Ergebnissen:

Bildbeschreibung hier eingeben


Der Zugriff wird an einer Eingabeaufforderung mit erhöhten Rechten verweigert. Ich verwende auch ein Domain-Administratorkonto.
Shiv

Funktionierte gut für mich zu überprüfen, ob ich RDP-ing jemand von einem Win 2k8 R2-Server booten würde. Der Status war "Disc" (nicht verbunden), damit ich RDP sicher einspielen kann.
Adambean

1

Erstellen Sie eine BAT-Datei, die eine Datei auf einer Freigabe generiert, die angibt, dass der Computer verwendet wird. Wenn sich ein Benutzer anmeldet, wird diese Datei ausgeführt und erstellt. Wenn sich ein Benutzer abmeldet (dies kann per GP-Skript erfolgen), wird die Datei gelöscht. Überprüfen Sie die Freigabe für diese Datei, bevor Sie eine Verbindung herstellen


1
Es tut mir leid, dass ich hätte erwähnen sollen, dass - da wir dieselbe Anmeldung verwenden - Benutzer sich nicht abmelden, sondern lediglich das Terminal trennen oder sperren.
YetAnotherUser

1

Mit dem Befehl NET SEND können Sie eine Nachricht an den Computer senden, um festzustellen, ob sich jemand darauf befindet. Dies kann durch die Verwendung einer GUI-App vereinfacht werden. Der folgende Link ist der erste freie, den ich bei einer Websuche gefunden habe, sodass keine spezielle Bestätigung erforderlich ist.

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

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


+1 - Net Send ist eine gute Option. Es erfordert, dass ein anderer Benutzer antwortet, um zu bestätigen, dass er das Gerät verwendet, und man müsste unnötigerweise 4-5 Minuten warten, bevor man annimmt, dass es nicht verwendet wird. Darüber hinaus muss der Nachrichtendienst auf allen Systemen ausgeführt werden, was in unserem Fall nicht der Fall ist.
YetAnotherUser

Es sollte beachtet werden, dass NET SEND eine korrekte Antwort auf die gestellte Frage war und sich auf Windows XP bezieht, jedoch nicht mehr für aktuelle Windows-Versionen gilt, da SEND wegen offensichtlicher Missbrauchsprobleme aus NET entfernt wurde.
Ich bin mit Monica

1

Ein anderer Weg:

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

(getestet unter Windows 7)


Warum erhalte ich aus Neugier die Fehlermeldung "Zugriff verweigert", wenn ich das versuche?
Darius

Möglicherweise verfügen Sie nicht über Administratorrechte auf dem Remotecomputer.
Kevin Worthington

Ich "ma net admin, ich denke, ich sollte, aber Sie wiesen mich in die richtige Richtung ....
Darius

Dies ist die einzige aufgeführte Antwort, bei der angegeben werden konnte, unter welchem ​​Benutzer eine Verbindung zum Remotecomputer hergestellt werden soll. Die anderen scheinen nur zu funktionieren, wenn Sie sich in derselben Domäne befinden und als Benutzer mit Zugriff ausgeführt werden.
LeBleu

0

Ich weiß, dass dies nur zu Ihrer Information über ein Jahr alt ist, aber selbst wenn jemand über Domänenadministratorrechte verfügt, gibt es Gruppenrichtlinien, die verhindern können, dass sich bestimmte Administratorkonten (Domäne, Unternehmen usw.) remote bei einem Computer anmelden.

Dies soll dazu beitragen, Computer, die Teil eines Remotestandorts sind, vor der Remoteverwaltung durch eine Person weiter oben in der AD-Struktur zu schützen.

Sie können überprüfen, ob dies verweigert wird, indem Sie in Ihren GPO-Berichten nach dem lokalen Computer unter suchen

                  gpreport /h report.html

an einer administrativen Eingabeaufforderung.


1
6 Jahre, aber wer zählt
mic84
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.