@echo off setlocal EnableExtensions DisableDelayedExpansion set "SERVER=hilfe.bergtechniker.de" set "VERSION=1.4.9" set "EXPECTED_SHA256=eaedeb0088e687bf46f7c46a9c6ea5493ce51f3134dfd6acbedb47b5b9136274" set "DOWNLOAD_URL=https://github.com/rustdesk/rustdesk/releases/download/%VERSION%/rustdesk-%VERSION%-x86_64.exe" set "DOWNLOAD_FILE=%TEMP%\rustdesk-%VERSION%-x86_64.exe" set "KEY_FILE=%TEMP%\rustdesk-%VERSION%-server-key.txt" set "RUSTDESK_EXE=%ProgramFiles%\RustDesk\rustdesk.exe" set "BAT_FILE=%~f0" net session >nul 2>&1 if errorlevel 1 ( echo Administratorrechte werden benoetigt. Windows fragt gleich danach. powershell.exe -NoProfile -NonInteractive -Command "$process = Start-Process -FilePath $env:ComSpec -ArgumentList @('/d', '/c', [char]34 + $env:BAT_FILE + [char]34) -Verb RunAs -Wait -PassThru; exit $process.ExitCode" exit /b %errorlevel% ) echo. echo RustDesk wird fuer die Fernwartung eingerichtet. echo Bitte bestaetigen Sie Windows-Sicherheitsabfragen mit Ja. echo. where curl.exe >nul 2>&1 if errorlevel 1 ( echo curl.exe ist auf diesem Windows-PC nicht verfuegbar. pause exit /b 1 ) echo Lade RustDesk %VERSION% herunter ... curl.exe --fail --location --proto =https --tlsv1.2 --silent --show-error --output "%DOWNLOAD_FILE%" "%DOWNLOAD_URL%" if errorlevel 1 ( echo Der Download ist fehlgeschlagen. pause exit /b 1 ) echo Pruefe die Download-Signatur ... powershell.exe -NoProfile -NonInteractive -Command "$hash = (Get-FileHash -Algorithm SHA256 -LiteralPath $env:DOWNLOAD_FILE).Hash; if ($hash -ne $env:EXPECTED_SHA256) { exit 1 }" if errorlevel 1 ( echo Die Pruefsumme stimmt nicht. Die Datei wird nicht ausgefuehrt. del /q "%DOWNLOAD_FILE%" >nul 2>&1 pause exit /b 1 ) echo Lade den Server-Schluessel ... curl.exe --fail --location --proto =https --tlsv1.2 --silent --show-error --output "%KEY_FILE%" "https://%SERVER%/pubkey.txt" if errorlevel 1 ( echo Der Server-Schluessel konnte nicht geladen werden. pause exit /b 1 ) set "SERVER_KEY=" for /f "usebackq delims=" %%K in ("%KEY_FILE%") do if not defined SERVER_KEY set "SERVER_KEY=%%K" if not defined SERVER_KEY ( echo Der Server-Schluessel ist leer. pause exit /b 1 ) echo Installiere RustDesk ... "%DOWNLOAD_FILE%" --silent-install if errorlevel 1 ( echo Die Installation ist fehlgeschlagen. pause exit /b 1 ) if not exist "%RUSTDESK_EXE%" set "RUSTDESK_EXE=%ProgramFiles(x86)%\RustDesk\rustdesk.exe" if not exist "%RUSTDESK_EXE%" ( echo RustDesk wurde nicht am erwarteten Ort gefunden. pause exit /b 1 ) "%RUSTDESK_EXE%" --install-service >nul 2>&1 sc.exe start RustDesk >nul 2>&1 timeout /t 3 /nobreak >nul echo Konfiguriere den RustDesk-Server ... "%RUSTDESK_EXE%" --option custom-rendezvous-server "%SERVER%" if errorlevel 1 goto :failed "%RUSTDESK_EXE%" --option key "%SERVER_KEY%" if errorlevel 1 goto :failed "%RUSTDESK_EXE%" --option allow-websocket Y if errorlevel 1 goto :failed "%RUSTDESK_EXE%" --option api-server "https://%SERVER%" if errorlevel 1 goto :failed for /f "delims=" %%P in ('powershell.exe -NoProfile -NonInteractive -Command "$chars = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789'; -join (1..16 ^| ForEach-Object { $chars[(Get-Random -Maximum $chars.Length)] })"') do set "PASSWORD=%%P" if not defined PASSWORD goto :failed "%RUSTDESK_EXE%" --password "%PASSWORD%" if errorlevel 1 goto :failed set "ID=" for /f "delims=" %%I in ('"%RUSTDESK_EXE%" --get-id') do if not defined ID set "ID=%%I" if not defined ID goto :failed >"%USERPROFILE%\Desktop\RustDesk-Support.txt" ( echo RustDesk-ID: %ID% echo Passwort: %PASSWORD% echo Server: %SERVER% ) del /q "%DOWNLOAD_FILE%" "%KEY_FILE%" >nul 2>&1 echo. echo Einrichtung abgeschlossen. echo Bitte lesen Sie dem Support diese Daten vor: echo. echo RustDesk-ID: %ID% echo Passwort: %PASSWORD% echo. echo Die Daten wurden ausserdem auf dem Desktop gespeichert. pause exit /b 0 :failed echo. echo Die RustDesk-Konfiguration ist fehlgeschlagen. echo Bitte schliessen Sie dieses Fenster nicht und rufen Sie den Support an. pause exit /b 1