# Technische Details ## Ablauf der Scripte ### START Rustdesk lokal.cmd ``` Batch-Script (.cmd) │ ├── Prüfe ob rustdesk.exe neben dem Script liegt ├── Beende laufende RustDesk-Instanzen (taskkill) ├── Sichere bestehende RustDesk2.toml → .techniverse-bak ├── Schreibe Server-Konfiguration in RustDesk2.toml ├── Starte rustdesk.exe ├── Warte bis Nutzer RustDesk schließt (Polling-Schleife) └── Cleanup ├── Konfiguration aus Backup wiederherstellen (oder löschen) ├── %LOCALAPPDATA%\rustdesk entfernen └── %APPDATA%\RustDesk entfernen (nur wenn vorher nicht vorhanden) ``` ### START Rustdesk Online-DL.cmd ``` Batch-Wrapper → extrahiert eingebettetes PowerShell-Script │ ├── PowerShell-Code wird aus dem .cmd in %TEMP% extrahiert ├── Ermittle neueste RustDesk-Version via GitHub API │ └── GET https://api.github.com/repos/rustdesk/rustdesk/releases/latest ├── Download von rustdesk-*-x86_64.exe nach %TEMP%\techniverse-fernwartung\ ├── Sichere bestehende RustDesk2.toml → .techniverse-bak ├── Schreibe Server-Konfiguration in RustDesk2.toml ├── Starte rustdesk.exe ├── Warte bis Nutzer RustDesk schließt (Polling-Schleife) └── Cleanup (im finally-Block, läuft auch bei Fehler) ├── Konfiguration aus Backup wiederherstellen (oder löschen) ├── %LOCALAPPDATA%\rustdesk entfernen ├── %APPDATA%\RustDesk entfernen (nur wenn vorher nicht vorhanden) └── %TEMP%\techniverse-fernwartung\ entfernen ``` --- ## Dateipfade | Pfad | Zweck | |---|---| | `%APPDATA%\RustDesk\config\RustDesk2.toml` | RustDesk-Konfigurationsdatei (Server, Key, etc.) | | `%APPDATA%\RustDesk\config\RustDesk2.toml.techniverse-bak` | Backup der originalen Konfiguration | | `%LOCALAPPDATA%\rustdesk\` | Von RustDesk entpackte Dateien (wird beim Cleanup entfernt) | | `%TEMP%\techniverse-fernwartung\` | Temporärer Download-Ordner (nur Online-Variante) | | `%TEMP%\techniverse-starter.ps1` | Temporär extrahiertes PowerShell-Script (nur Online-Variante) | --- ## Generierte Konfiguration (RustDesk2.toml) ```toml rendezvous_server = "fernwartung.techniverse.net" nat_type = 1 serial = 0 [options] custom-rendezvous-server = "fernwartung.techniverse.net" relay-server = "fernwartung.techniverse.net" key = "uE3lJCcnk21qN0VUdqtwJG6QAnpahdB5b2gVe40oMbU=" ``` Falls ein API-Server konfiguriert ist, wird zusätzlich `api-server` gesetzt. --- ## Batch/PowerShell-Hybrid (Online-Variante) Das Online-Script nutzt einen Trick: Die `.cmd`-Datei enthält eingebetteten PowerShell-Code zwischen den Markern `:: BEGIN_PS1` und `:: END_PS1`. Der Batch-Teil extrahiert diesen Code in eine temporäre `.ps1`-Datei und führt sie aus. Dadurch braucht der Nutzer nur eine einzige Datei. **Ausführung:** `powershell.exe -NoProfile -ExecutionPolicy Bypass -File .ps1` --- ## Cleanup-Verhalten Beide Scripte räumen nach dem Beenden von RustDesk auf: - **Backup vorhanden:** Die originale `RustDesk2.toml` wird wiederhergestellt, das Backup gelöscht. - **Kein Backup:** Die geschriebene `RustDesk2.toml` wird gelöscht. Zusätzlich wird der gesamte `%APPDATA%\RustDesk`-Ordner entfernt (da RustDesk vorher nicht installiert war). - **Installationsreste:** `%LOCALAPPDATA%\rustdesk` wird immer entfernt. - **Online-Variante:** Der Cleanup läuft im `finally`-Block und wird auch bei Fehlern ausgeführt. --- ## Voraussetzungen im Detail | Anforderung | Lokal | Online | |---|---|---| | Windows 10+ | ✅ | ✅ | | Administratorrechte | ❌ | ❌ | | Internetverbindung | ❌ | ✅ | | PowerShell 5.1+ | ❌ | ✅ | | TLS 1.2 | – | ✅ | | rustdesk.exe im gleichen Ordner | ✅ | ❌ (wird heruntergeladen) |