Files
Mstsc-Script-Hook/README.md
T
patrick 4c51989600 feat: initiale Version 0.1.0 des MSTSC Script Hooks
- Native x64 MSTSC-DVC-Erweiterung für lokalen Programmstart
- Automatischer Script-/Programmstart bei RDP-Verbindungsaufbau
- Separater Programmstart über Trigger innerhalb der RDP-Sitzung
- Bidirektionaler DVC zur Ermittlung des lokalen Client-Hostnamens
- SIOMIN-Trigger zur Anbindung lokaler Sidexis-Installationen
- SIOMIN-Datensatzlängen und Hostname-Felder bytegenau angepasst
- Temporäre SIOMIN-Einträge nach erfolgreicher Übernahme bereinigt
- Native Win32-Konfigurationsoberfläche ohne .NET-Abhängigkeit
- Mehrfachstartschutz und optionaler unsichtbarer Programmstart
- Debug- und Plugin-Logging ergänzt
- RemoteVDDS-Anwendungsfall integriert
- Installer/Registrierung des MSTSC-Plugins über Client-Konfigurator
- Techniker-, Entwickler- und Projektdokumentation ergänzt
- Proprietäre Lizenz für Copyright Patrick Gniza hinzugefügt
2026-08-11 16:32:33 +02:00

235 lines
7.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Plandent MSTSC Script Hook
Native Windows-x64-Lösung zur Verbindung von lokal auf einem RDP-Client installierten Programmen mit Anwendungen und Abläufen innerhalb einer Terminalserver-Sitzung.
Das Projekt ist insbesondere für drei praktische Einsatzfälle vorgesehen:
1. **RemoteVDDS-Receiver beim Aufbau einer RDP-Verbindung automatisch lokal starten.**
2. **Ein fest vorkonfiguriertes lokales Programm bei Bedarf aus der RDP-Sitzung starten.**
3. **Eine Anwendung innerhalb der RDP-Sitzung über SIOMIN/SLIDA mit einem lokal installierten Sidexis verbinden.**
Die Lösung ist für den klassischen Microsoft Remote Desktop Connection Client `mstsc.exe` ausgelegt.
## Typischer Einsatzzweck
In einer Terminalserver-Umgebung befinden sich Praxissoftware oder andere Fachanwendungen innerhalb der RDP-Sitzung, während bestimmte Programme auf dem lokalen Arbeitsplatzrechner ausgeführt werden müssen.
Der Plandent MSTSC Script Hook stellt dafür eine kontrollierte Verbindung zwischen Terminalserver-Sitzung und lokalem Client bereit. Programme und Parameter werden ausschließlich auf dem Client vorkonfiguriert. Eine Anwendung auf dem Terminalserver kann keinen beliebigen lokalen Programmpfad übergeben.
## Komponenten
### Lokaler RDP-Client
**`PlandentMstscScriptHook.exe`**
Konfiguration und Installation des Client-Plugins. Hier werden zwei voneinander unabhängige Starts eingerichtet:
- automatischer Programm-/Scriptstart nach erfolgreichem RDP-Verbindungsaufbau,
- Programm-/Scriptstart auf Anforderung aus der Terminalserver-Sitzung.
Die benötigte Plugin-DLL ist in der EXE eingebettet und wird bei der Installation automatisch eingerichtet.
### Terminalserver
**`PlandentRdpClientTrigger.exe`**
Löst innerhalb der aktuellen RDP-Sitzung den auf dem Client vorkonfigurierten Programmstart aus.
Die EXE benötigt keine Parameter. Welches Programm gestartet wird, ist ausschließlich auf dem lokalen Client hinterlegt.
**`PlandentSiominClientTrigger.exe`**
Spezialisierter Trigger zur Anbindung einer Anwendung innerhalb der RDP-Sitzung an ein lokal installiertes Sidexis.
Der Trigger:
- ermittelt den tatsächlichen Hostnamen des lokalen RDP-Clients,
- übernimmt einen temporär erzeugten SIOMIN-/SLIDA-Eintrag,
- ersetzt darin den Terminalservernamen durch den Hostnamen des lokalen Clients,
- schreibt den angepassten Eintrag in die finale `siomin.sdx`,
- leert anschließend die temporäre Datei,
- startet danach das auf dem Client konfigurierte Programm.
## RemoteVDDS
Ein vorgesehener Anwendungsfall ist die Verwendung mit den **RemoteVDDS-Scripten von Tobias Bauer**.
Der RemoteVDDS-Receiver kann über den Bereich **Automatischer Start bei RDP-Verbindung** auf dem Client eingetragen werden. Dadurch wird der Receiver beim Aufbau der Terminalserver-Verbindung automatisch und auf Wunsch unsichtbar im Hintergrund gestartet.
Beispiel:
```text
Programm/Script:
C:\RemoteVDDS\RemoteVDDS_Receiver_TS.bat
Argumente:
MIN
Unsichtbar starten:
Ja
Mehrfachstart verhindern:
Ja
```
Bei Auswahl einer Datei mit `RemoteVDDS_Receiver_TS` im Namen schlägt der Konfigurator bei leeren Argumenten automatisch `MIN` vor.
Die RemoteVDDS-Scripte selbst sind **nicht Bestandteil dieses Projekts** und unterliegen den Rechten ihres jeweiligen Autors.
## Programmstart aus der RDP-Sitzung
Soll ein lokales Programm nicht bei jeder RDP-Verbindung, sondern nur bei Bedarf gestartet werden, wird es auf dem Client im Bereich **Programmstart durch Terminalserver** konfiguriert.
Innerhalb der RDP-Sitzung wird anschließend lediglich ausgeführt:
```text
PlandentRdpClientTrigger.exe
```
Der Trigger startet das auf dem Client hinterlegte Programm. Programmpfad und Parameter werden nicht vom Terminalserver übertragen.
## Sidexis über SIOMIN aus einer RDP-Sitzung ansprechen
Für Programme, die innerhalb der Terminalserver-Sitzung laufen, aber ein **lokal installiertes Sidexis** ansprechen sollen, steht `PlandentSiominClientTrigger.exe` zur Verfügung.
Im betreffenden Terminalprogramm wird als Sidexis-Programm bzw. Sidexis-EXE nicht direkt Sidexis, sondern beispielsweise folgende Datei hinterlegt:
```text
C:\PDATA\exe\PlandentSiominClientTrigger.exe
```
Das Terminalprogramm sollte seinen SLIDA-/SIOMIN-Eintrag zunächst in eine **lokale temporäre Datei auf dem Terminalserver** schreiben, beispielsweise:
```text
C:\PDATA\temp_siomin.sdx
```
Der SIOMIN-Trigger übernimmt diesen Eintrag anschließend in die finale `siomin.sdx`, die typischerweise im gemeinsamen PDATA-Verzeichnis liegt:
```text
\\SERVER\PDATA\siomin.sdx
```
Die Konfiguration erfolgt über eine INI-Datei mit demselben Basisnamen wie die EXE:
```text
PlandentSiominClientTrigger.exe
PlandentSiominClientTrigger.ini
```
Beispiel:
```ini
[SIOMIN]
SIOMIN_TEMP_PATH=C:\PDATA\temp_siomin.sdx
SIOMIN_PATH=\\SERVER\PDATA\siomin.sdx
DEBUG=0
```
Existiert die INI beim ersten Start nicht, wird sie mit lokalen Standardpfaden automatisch erzeugt:
```ini
[SIOMIN]
SIOMIN_TEMP_PATH=C:\PDATA\temp_siomin.sdx
SIOMIN_PATH=C:\PDATA\siomin.sdx
DEBUG=0
```
Für die Fehlersuche kann `DEBUG=1` gesetzt werden. Dann wird neben der EXE eine gleichnamige `.log`-Datei erzeugt.
## Installation auf dem Client
1. `PlandentMstscScriptHook.exe` starten.
2. Gewünschten automatischen Start konfigurieren oder deaktivieren.
3. Optional ein separates Programm für den Terminalserver-Trigger konfigurieren.
4. Bei Bedarf **Start durch Terminalserver-Trigger erlauben** aktivieren.
5. Einstellungen speichern bzw. **Plugin installieren** wählen.
6. Bereits laufende `mstsc.exe`-Instanzen vollständig schließen.
7. RDP-Verbindung neu aufbauen.
Die Installation erfolgt benutzerbezogen und benötigt im Normalfall keine Administratorrechte.
## Bereitstellung auf dem Terminalserver
Je nach Anwendungsfall werden nur die benötigten EXE-Dateien auf den Terminalserver kopiert:
```text
PlandentRdpClientTrigger.exe
PlandentSiominClientTrigger.exe
```
Es ist dort keine Installation oder Registrierung erforderlich.
## Unterstützte lokale Programme
Der Client kann folgende Typen starten:
- `.exe`
- `.bat`
- `.cmd`
- `.ps1`
Programme können sichtbar oder unsichtbar gestartet werden. Optional kann ein Mehrfachstart verhindert werden.
## Logging
Das Client-Plugin kann ein Log unter folgendem Pfad führen:
```text
%LOCALAPPDATA%\Plandent\MstscScriptHook\plugin.log
```
Für den SIOMIN-Trigger kann separat über
```ini
DEBUG=1
```
eine Logdatei neben `PlandentSiominClientTrigger.exe` aktiviert werden.
## Build
Voraussetzungen:
- Windows 10/11 x64
- Visual Studio 2022 oder Build Tools
- Workload **Desktopentwicklung mit C++**
- Windows 10/11 SDK
Release erstellen:
```powershell
.\build-release.ps1 -Clean
```
Ausgabe:
```text
dist\
├── PlandentMstscScriptHook.exe
├── PlandentRdpClientTrigger.exe
└── PlandentSiominClientTrigger.exe
```
Alle Komponenten sind native x64-Binaries. Eine .NET-Runtime wird nicht benötigt.
## Dokumentation
- `Home.md` – Anwender-/Technikerdokumentation
- `DEVELOPMENT.md` – technische Entwicklerdokumentation
## Hinweise
Das Projekt ist für den klassischen Microsoft-RDP-Client `mstsc.exe` vorgesehen. Der Trigger muss innerhalb der RDP-Sitzung ausgeführt werden, deren lokaler Client angesprochen werden soll.
Der lokale Programmstart erfolgt mit den Rechten des Benutzers, unter dem `mstsc.exe` auf dem Client ausgeführt wird.
Produktnamen wie Sidexis sind Eigentum der jeweiligen Rechteinhaber. Die RemoteVDDS-Scripte von Tobias Bauer sind nicht Bestandteil dieses Projekts.
## Lizenz
Copyright (c) 2026 Patrick Gniza.
All rights reserved.
Siehe [LICENSE](LICENSE).