@echo off REM ============================================================ REM set-vnc-password.bat - reliably set the UltraVNC VNC password REM for the running service (uvnc_service / LocalSystem), which REM reads %ProgramData%\UltraVNC\ultravnc.ini. REM REM Runs AS ADMINISTRATOR (auto-elevates). It first tries the REM UltraVNC CLI helpers (createpassword.exe / setpasswd.exe) and REM VERIFIES the password actually changed in ultravnc.ini; if they REM fail silently (as they can), it opens the UltraVNC settings GUI REM so you can set "VNC Password" there. Then it restarts the REM service. Use the SAME password in run.bat (ASCII, max 8 chars). REM ============================================================ chcp 866 >nul cd /d "%~dp0" net session >nul 2>nul if errorlevel 1 ( echo Requesting administrator rights ... powershell -Command "Start-Process -FilePath '%~f0' -Verb RunAs" exit /b ) set "UVNC=" for %%P in ( "C:\Program Files\uvnc bvba\UltraVNC" "C:\Program Files\UltraVNC" "C:\Program Files (x86)\uvnc bvba\UltraVNC" "C:\Program Files (x86)\UltraVNC" ) do ( if exist "%%~P\winvnc.exe" if not defined UVNC set "UVNC=%%~P" ) if not defined UVNC ( echo [error] UltraVNC installation not found. pause exit /b 1 ) echo UltraVNC: %UVNC% set "INI=%ProgramData%\UltraVNC\ultravnc.ini" :getpw set "PW=" set /p "PW=Enter VNC password (ASCII, max 8 chars): " if "%PW%"=="" ( echo Password cannot be empty. & goto getpw ) REM record old passwd set "OLDPW=" if exist "%INI%" for /f "tokens=2 delims==" %%a in ('findstr /b /i "passwd=" "%INI%" 2^>nul ^| findstr /v /i "passwd2"') do set "OLDPW=%%a" echo Old passwd=%OLDPW% REM try CLI helpers, verify after each set "DONE=0" if exist "%UVNC%\createpassword.exe" ( echo Trying createpassword.exe ... "%UVNC%\createpassword.exe" "%PW%" >nul 2>nul call :checkchanged ) if "%DONE%"=="0" if exist "%UVNC%\setpasswd.exe" ( echo Trying setpasswd.exe ... "%UVNC%\setpasswd.exe" "%PW%" "%PW%" >nul 2>nul call :checkchanged ) if "%DONE%"=="0" ( echo. echo CLI helpers did not change the password file. Opening UltraVNC settings... echo -> right-click the UltraVNC tray icon, choose Admin Properties, echo set the "VNC Password" to: %PW% echo -> close the settings/tray app, then come back here and press a key. echo. start "" "%UVNC%\winvnc.exe" pause call :checkchanged ) set "PW=" if "%DONE%"=="0" ( echo [warn] Password still not changed in %INI%. echo Set it manually in UltraVNC Admin Properties as administrator. pause exit /b 1 ) REM restart the service so it reloads the password set "SVC=uvnc_service" sc query %SVC% >nul 2>nul if errorlevel 1 ( echo [warn] Service '%SVC%' not found; restart winvnc manually if it runs in app mode. goto showini ) echo Restarting service %SVC% ... net stop %SVC% >nul 2>nul net start %SVC% :showini echo. echo --- %INI% --- if exist "%INI%" type "%INI%" echo. echo Done. Use the SAME password in run.bat, then reconnect in the browser. pause exit /b :checkchanged set "NEWPW=" if exist "%INI%" for /f "tokens=2 delims==" %%a in ('findstr /b /i "passwd=" "%INI%" 2^>nul ^| findstr /v /i "passwd2"') do set "NEWPW=%%a" if not "%NEWPW%"=="%OLDPW%" ( echo Password file updated. New passwd=%NEWPW% set "DONE=1" ) goto :eof