Remotedesktopverbindung durch Client beenden

E

Ehemaliger Benutzer

Gast
Kennt sich hier jemand mit Remotedesktopverbindungen bei Windows aus?

Ich suche nach einer Möglichkeit, die RDP-Verbindung kurzzeitig zu unterbrechen und zu blockieren. Dabei soll der Rechner, auf dem man remote arbeitet der Auslöser sein.

Grober Ablauf:
  1. RDP-Verbindung auf den Zielrechner
  2. Starten eines Skripts (auf dem Zielrechner)
    1. Beendet die Verbindung und blockt Verbindungsversuche (Benutzer ist nicht mehr Remote verbunden)
    2. Führt ein paar Befehle aus (Skript läuft immer noch auf dem Remote-Rechner)
    3. Erlaubt Verbindungen wieder (Man könnte sich wieder auf den Remote-Rechner aufschalten)
Dabei soll der Benutzer allerdings nicht abgemeldet werden, da sonst ja dessen Prozesse nicht weiterlaufen.

Hat irgendjemand Ideen oder Erfahrungen damit?

Meine Idee momentan ist lediglich mit (Windows-)Funktionen den entsprechenden Port zu blocken oder die Verbindung einfach völlig zu deaktivieren. Die Frage ist nur, was das für Auswirkungen auf den angemeldeten Benutzer hat (Datenverlust, laufen Prozesse weiter, ....).
 
Zuletzt bearbeitet von einem Moderator:
Das man die Remote-Sitzung einfach durch einen Klick auf das X im Fensterrahmen verlassen kann und dabei - die richtigen Einstellungen vorausgesetzt - die Sitzung erhalten bleibt, ist mir bekannt.
Ich habe gerade eher das Problem, dass ich zu einem bestimmten Zeitpunkt dieses "Verlassen" durch den Remote-Rechner auslösen will/muss.

Das könnte zwar möglicherweise über einen Timeout gelöst werden. Allerdings muss ich zwingend nach dem "Verlassen" ein paar Befehle ausführen. Ich müsste also irgendwie prüfen, ob der Timeout erfolgt ist und dann meine Befehle ausführen. Gleichzeitig müsste ich Verbindungsversuche blocken - das ist zwingend erforderlich.

Daher wäre es einfacher, wenn ich auf dem Remote-Rechner lediglich ein Skript starten müsste, was die in meinem ersten Beitrag beschriebenen Aktionen nacheinander ausführt. Leider zeigt mir Google dazu keine sinnvollen Ergebnisse wie bspw. "RDPCloseConnection()" oder "RDP.Disable" an - wär ja wohl auch zu schön.:)
 
Wie wäre es wenn du den entsprechenden Dienst beendest und wieder startest? Das hier müsste es eigentlich tun:
Code:
net stop TermService
net start TermService
Allerdings hab ich das nicht selber ausprobiert.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: 1 Person
Wie wäre es wenn du den entsprechenden Dienst beendest und wieder startest? Das hier müsste es eigentlich tun:
Code:
net stop TermService
net start TermService
Allerdings hab ich das nicht selber ausprobiert.
Wäre auch meine erste Idee. Allerdings muss der User die Verbindung evtl. manuell neu aufbauen, wenn die "Auszeit" zu lange dauert, oder keine "automatische Verbindungswiederherstellung" eingerichtet ist.
Außerdem müsste man noch testen, ob ein Terminal-Benutzer weiterhin angemeldet bleibt, wenn der Terminal-Dienst beendet wird...

@DICE: Was genau hast du denn vor? Reicht es nicht schon, wenn du die Anzeige der Programme/Befehle mit sowas wie "Window Hide Tool" versteckst? Oder indem in der Zwischenzeit ein nicht wegklickbares bildschirmfüllendes Fenster (z.B. mit "Bitte warten") angezeigt wird...
 
  • Like
Reaktionen: 1 Person
Wie wäre es wenn du den entsprechenden Dienst beendest und wieder startest? Das hier müsste es eigentlich tun:
Code:
net stop TermService
net start TermService
Allerdings hab ich das nicht selber ausprobiert.

Danke für den Hinweis. Das muss ich mal am Zielobjekt probieren. Hier auf meinem Testsystem (virtuelle Maschine) funktioniert das leider nicht. Es erscheint die Meldung, der Service sei gar nicht aktiv.:huh: Möglicherweise pfuscht da VirtualBox irgendwie rein.
Wenn ich das mal auf dem echten Zielrechner probieren darf, lasse ich euch wissen, was dabei herauskam.

Wäre auch meine erste Idee. Allerdings muss der User die Verbindung evtl. manuell neu aufbauen, wenn die "Auszeit" zu lange dauert, oder keine "automatische Verbindungswiederherstellung" eingerichtet ist.
Außerdem müsste man noch testen, ob ein Terminal-Benutzer weiterhin angemeldet bleibt, wenn der Terminal-Dienst beendet wird...
Das ist alles nebensächlich für mich. Wichtig ist lediglich, dass der Benutzer nicht zu schnell abgemeldet wird, damit meine Befehle ausgeführt werden können. Aber das liese sich ja alles einstellen.

@DICE: Was genau hast du denn vor? Reicht es nicht schon, wenn du die Anzeige der Programme/Befehle mit sowas wie "Window Hide Tool" versteckst? Oder indem in der Zwischenzeit ein nicht wegklickbares bildschirmfüllendes Fenster (z.B. mit "Bitte warten") angezeigt wird...
Nein, verstecken reicht nicht. Und wenn, bekäme ich das auch ohne irgendein Tool hin. ;)
Das Problem ist, dass ich hier ein Programm habe, welches perfekt funktioniert, wenn man normal (also direkt) am PC arbeitet. Sobald man sich aber Remote anmeldet, verweigern bestimmte Funktionen ihren Dienst.
Daher ist die Idee, diese Funktionen automatisiert auszuführen. Das klappt soweit auch ganz gut, wenn man das Skript beispielsweise direkt am Rechner startet. Wenn ich es jetzt also noch schaffen würde, das Skript über die Remote-Verbindung zu starten und die Verbindung darüber beenden zu lassen, wäre mein Problem erledigt.