RDPState oder wie man Benutzer daran hindert, ohne Vorwarnung eine Remote Desktop-Sitzung zu übernehmen

Markus fragte heute in der Microsoft Windows Vista Netzwerk Newsgroup (microsoft.public.de.windows.vista.netzwerk) danach, wie man denn verhindern könne, das ein Benutzer einen bereits angemeldeten Benutzer via RDP die Sitzung “klaut”.

Zu Beginn sei gesagt, das mir zumindest nicht bekannt ist, wie man 100%-ig sicher die Übernahme verhindern kann. Aber, und hier setzt meine Lösung an, man kann dem Benutzer, der eine neue Verbindung aufbauen möchte eine Meldung präsentieren, das bereits ein anderer Benutzer angemeldet ist.

Ich habe vor einer Weile genau diesen Fall gehabt. Ein PC bzw. eine virtuelle Maschine mit Windows XP Professional wird abwechselnd von verschiedenen Benutzern via Remote Desktop verwendet, da dort eine Warenwirtschaftslösung installiert ist. Da sich die Benutzer dann immer gegenseitig raus gekickt haben, habe ich ein paar Skripte entwickelt die ich nachfolgend kurz vorstelle.

imageWie funktioniert nun das Ganze? Relativ einfach. Auf einem gemeinsam genutzten Netzlaufwerk liegen die Skripte und auf den Desktops ist eine Verknüpfung zu einem dieser Skripte hinterlegt. Wenn ein Benutzer nun die Verbindung aufbauen möchte, so startet er ein Skript über die Verknüpfung. Dieses Skript prüft, ob eine Status-Datei vorhanden ist. Falls keine Status-Datei vorhanden ist, dann wird einfach eine Verbindung aufgebaut. Falls eine Status-Datei gefunden wird, bedeutet das, dass ein Benutzer via RDP oder Lokal angemeldet ist, dann wird eine Meldung angezeigt, das bereits eine Verbindung besteht. Es wird angezeigt, von welchem Computer aus die Verbindung besteht, seit wann die Verbindung besteht und ob man sich dennoch verbinden möchte.

Der Quellcode (AutoIt) und die Exe-Dateien gibt es hier zum Download.

Hinweis: Wie bereits erwähnt, habe ich das Ganze vor ein paar Jahren geschrieben. Ich weiß nicht, ob es unter Windows Vista, Windows 7, 32-/64-Bit läuft! Ferner müssen bestimmte Berechtigungen für das Netzlaufwerk und die Registry (Lesen in HKCU, sollte Standard sein) vorhanden sein.

Voraussetzungen

1x Windows XP Professional mit aktivierten Remotedesktop (“RDP-Server”)

1x Netzlaufwerk für den gemeinsamen Zugriff der RDP-Clients (Skript- und Status-Ablage)

Windows XP Clients mit verbundenem Netzlaufwerk (Berechtigungen [Lesen/Schreiben] beachten)

1x RDP-Datei mit den Voreinstellungen für die Remote Desktop-Verbindung

Installation

Auf dem Netzlaufwerk den Inhalt des Ordners bin aus dem Zip-Archiv ablegen. In diesen Ordner ebenfalls die RDP-Datei ablegen. Auf den Arbeitsplätzen eine Verknüpfung zur RDStateCheck.exe hinterlegen.

Tipp: Die Verknüpfung umbenennen in den Computernamen, zu dem man sich verbindet.

Die Datei RDConsole.exe in den Autostart des “RDP-Servers” verknüpfen. Die Datei RDStateReset.cmd via Gruppenrichtlinie als Abmelde-Skript auf dem “RDP-Server” einrichten.

Konfiguration

Den Namen der RDP-Datei in die RDState.ini eintragen.

Das Skript RDStateReset.cmd anpassen (Laufwerksbuchstabe des Netzlaufwerks).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.