@echo off rem Startet den Dev-Modus mit Administratorrechten (ein UAC-Prompt erscheint). rem Noetig, weil Genshin erhoeht laeuft: Windows (UIPI) verwirft sonst alle rem simulierten Maus-Eingaben an das Spiel - SendInput meldet trotzdem Erfolg. rem Der Punkt hinter %~dp0 verhindert, dass der abschliessende Backslash das rem schliessende Anfuehrungszeichen escaped. rem -NoExit haelt das erhoehte (innere) Fenster offen, selbst wenn das Skript rem einen Fehler wirft oder npm run dev sofort wieder beendet. rem rem Dieses AEUSSERE Fenster (das du beim Doppelklick oder ueber rem "npm run dev:admin" siehst) schloss sich frueher sofort, sobald rem Start-Process zurueckkehrte - auch wenn UAC abgelehnt wurde oder die rem Elevation ganz fehlschlug, ohne dass davon irgendetwas sichtbar war. rem try/catch + timeout zeigen jetzt den Fehler und halten das Fenster kurz offen. "%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy Bypass -Command "$script='%~dp0scripts\dev-admin-start.ps1'; $project='%~dp0.'; try { Start-Process powershell -ArgumentList @('-NoProfile','-ExecutionPolicy','Bypass','-NoExit','-File',$script,'-ProjectRoot',$project) -Verb RunAs -ErrorAction Stop; Write-Host ''; Write-Host 'UAC-Abfrage gestartet. Bitte bestaetigen - danach oeffnet sich ein neues Administrator-Fenster mit npm run dev.' -ForegroundColor Green } catch { Write-Host ''; Write-Host 'Admin-Start fehlgeschlagen oder UAC-Abfrage abgelehnt:' -ForegroundColor Red; Write-Host $_.Exception.Message -ForegroundColor Red }" echo. echo Dieses Fenster kannst du jetzt schliessen (Taste druecken oder 15s warten). Das eigentliche Programm laeuft im neuen Administrator-Fenster. rem timeout statt pause/choice: pause und choice warten unter umgeleiteter rem Standardeingabe (z.B. beim Testen ueber ein Skript) fuer immer, weil sie rem auf ein echtes Konsolen-Handle angewiesen sind. timeout erkennt eine rem umgeleitete Eingabe explizit und bricht sofort ab statt zu haengen, waehrend rem es bei einem echten Doppelklick normal 15s wartet oder bei Tastendruck endet. timeout /t 15 >nul 2>&1