polish: UTF-8 batch scripts, drop redundant set-vnc-password, robust vnc password probe
- run.bat / open-firewall.bat: UTF-8 (no BOM) + chcp 65001 instead of cp866/chcp 866. - scripts/set-vnc-password.bat: removed (run.bat syncs the UltraVNC password via ensure-vnc-password.ps1). - scripts/ensure-vnc-password.ps1: use a real RFB VNC-Auth probe to 127.0.0.1:5900 to decide if the password already matches (no UAC when it does); set via createpassword/setpasswd + service restart only when it differs. Works for any password length (no stored-password encoding assumptions). - AGENTS.md: .bat encoding convention updated to UTF-8/chcp 65001; drop set-vnc-password refs.
This commit is contained in:
@@ -63,17 +63,18 @@ scripts/get-novnc.{ps1,sh} скачать noVNC
|
||||
scripts/get-vnc.ps1 скачать портативный UltraVNC в vnc/ (с верификацией zip)
|
||||
scripts/list-ips.ps1 список IPv4 машины (используется run.bat)
|
||||
scripts/open-firewall.bat открыть порт 8080 в Windows Firewall (от админа)
|
||||
scripts/set-vnc-password.bat задать VNC-пароль сервису UltraVNC (от админа; без него noVNC получает authentication rejected)
|
||||
scripts/ensure-vnc-password.ps1 синхронизирует VNC-пароль UltraVNC с паролем из run.bat (пишет только при несовпадении; UAC только при смене) — вызывается из run.bat
|
||||
run.bat запуск в один клик (спрашивает только пароль); синхронизирует VNC-пароль UltraVNC с введённым (см. ensure-vnc-password.ps1); если 5900 уже занят (сервис UltraVNC) — не порождает второй VNC-сервер, а подключается к существующему
|
||||
```
|
||||
|
||||
## Соглашения и подводные камни
|
||||
|
||||
- **Кодировка файлов `.bat`:** сохранять в кодировке **cp866** с окончаниями строк
|
||||
**CRLF**. PowerShell `Set-Content -Encoding UTF8` добавляет BOM и пишет LF —
|
||||
не использовать для `.bat`. Пиши через
|
||||
`[System.IO.File]::WriteAllText(path, content -replace "(?<!\r)\n","`r`n", [Text.Encoding]::GetEncoding(866))`.
|
||||
- **Кодировка файлов `.bat`:** **UTF-8 без BOM**, окончания строк **CRLF**, и первой
|
||||
командой после `@echo off` — `chcp 65001 >nul` (консоль в UTF-8, иначе кириллица
|
||||
в echo/set/for превратится в мусор). Проверено: `echo`, `set /p`, `for /f` и
|
||||
перенаправление в файл корректно работают с кириллицей под `chcp 65001`.
|
||||
Пиши через `[System.IO.File]::WriteAllText(path, content -replace "(?<!\r)\n","`r`n", [Text.UTF8Encoding]::new($false))`.
|
||||
(BOM не ставить — ломает первую строку `@echo off` на старых Windows.)
|
||||
- **Go-файлы:** UTF-8 **без BOM**, LF. То же самое правило — не использовать
|
||||
`Set-Content -Encoding UTF8` (ставит BOM). Используй
|
||||
`[System.IO.File]::WriteAllText(path, content, [Text.UTF8Encoding]::new($false))`.
|
||||
@@ -102,5 +103,5 @@ run.bat запуск в один клик (спрашивае
|
||||
`%ProgramData%\UltraVNC\ultravnc.ini`; задать его обычным пользователем через
|
||||
tray-иконку молча не получается (нет прав на запись).
|
||||
`run.bat` синхронизирует этот пароль сам через `scripts/ensure-vnc-password.ps1`
|
||||
(пишет только при несовпадении, UAC только при смене; вручную — `scripts/set-vnc-password.bat` от админа). VNC-пароль = первые 8 байт,
|
||||
(пишет только при несовпадении; UAC только при смене пароля). VNC-пароль = первые 8 байт,
|
||||
поэтому используй ASCII-пароль <= 8 символов и там, и в `run.bat`.
|
||||
|
||||
Reference in New Issue
Block a user