79 lines
6.9 KiB
Markdown
79 lines
6.9 KiB
Markdown
# Настройка Windows-киоска Exchanger
|
||
|
||
## Граница ответственности
|
||
|
||
Exchanger в production включает borderless fullscreen, скрывает курсор и восстанавливает
|
||
полноэкранный режим после смены фокуса, дисплея или разрешения. Приложение не может блокировать
|
||
`Ctrl+Alt+Del`, системные жесты, переключение пользователя и аварийные средства Windows.
|
||
Эти ограничения настраиваются операционной системой.
|
||
|
||
## Выделенная учётная запись
|
||
|
||
1. Создайте локального пользователя без административных прав, предназначенного только для автомата.
|
||
2. Запретите интерактивный доступ к рабочим документам и сетевым ресурсам, которые не нужны Exchanger.
|
||
3. Выдайте пользователю права записи только в `%APPDATA%\Godot\app_userdata\Exchanger` и каталог установки, если обновление выполняется отдельным сервисом.
|
||
4. Настройте автоматический вход только после оценки физической безопасности автомата.
|
||
5. Для полной блокировки оболочки используйте Windows Assigned Access либо Shell Launcher в поддерживаемой редакции Windows. Не переименовывайте exe и не заменяйте системную оболочку до проверки процедуры восстановления.
|
||
|
||
## Автозапуск и watchdog
|
||
|
||
В `tools/windows` находятся:
|
||
|
||
- `Exchanger.Watchdog.ps1` — запускает приложение и перезапускает его после завершения;
|
||
- `Install-ExchangerKioskTask.ps1` — создаёт задачу Планировщика при входе выделенного пользователя;
|
||
- `Uninstall-ExchangerKioskTask.ps1` — удаляет только эту задачу.
|
||
|
||
Установка выполняется вручную из PowerShell под киоск-пользователем:
|
||
|
||
```powershell
|
||
.\tools\windows\Install-ExchangerKioskTask.ps1 `
|
||
-ExecutablePath 'C:\Program Files\Exchanger\Exchanger.exe' `
|
||
-WhatIf
|
||
|
||
.\tools\windows\Install-ExchangerKioskTask.ps1 `
|
||
-ExecutablePath 'C:\Program Files\Exchanger\Exchanger.exe'
|
||
```
|
||
|
||
Сначала обязательно используйте `-WhatIf`. Watchdog хранит собственный ограниченный журнал в
|
||
`%LOCALAPPDATA%\Exchanger\watchdog`; пользовательские журналы приложения находятся отдельно в
|
||
`%APPDATA%\Godot\app_userdata\Exchanger\logs`.
|
||
|
||
## Питание и дисплей
|
||
|
||
- отключите сон, гибернацию и автоматическое выключение дисплея для киоск-профиля;
|
||
- запретите USB selective suspend для подтверждённого COM-контроллера;
|
||
- задайте фиксированную портретную ориентацию и масштаб Windows;
|
||
- отключите автоматическое подключение беспроводных дисплеев;
|
||
- после замены монитора проверьте 1080×1920 и fallback 720×1280;
|
||
- настройте автоматическое включение ПК после восстановления питания в BIOS/UEFI.
|
||
|
||
## Защищённый сервисный вход
|
||
|
||
Production не реагирует на `F10`. Экран PIN открывается только после физического сообщения
|
||
`SERVICE` от периферийного контроллера и только когда пользовательская операция не выполняется.
|
||
Защита включается в разделе «Общие» настроек владельца. После автосохранения и выхода следующий
|
||
вход показывает создание PIN: необходимо ввести и повторить от 4 до 12 цифр. Последующие входы
|
||
проверяют этот PIN; после пяти ошибок вход блокируется на 30 секунд. Кнопка «Сбросить PIN» удаляет
|
||
старые проверочные данные, после чего новый PIN задаётся при следующем входе.
|
||
|
||
Открытый PIN не входит в `appsettings.json`, резервную копию, журналы или diagnostic UI. В секции
|
||
`Security` сохраняются только случайная соль, PBKDF2-SHA256-хеш и число итераций. Доступ к самому
|
||
файлу конфигурации и учётной записи Windows всё равно должен быть ограничен средствами ОС.
|
||
AES-ключ, платёжные данные и сырые команды контроллера через UI недоступны.
|
||
|
||
## Приёмка после настройки
|
||
|
||
1. Перезагрузите Windows и убедитесь, что появляется только Exchanger.
|
||
2. Завершите процесс через диспетчер задач из административной сессии и проверьте перезапуск.
|
||
3. Смените разрешение/отключите тестовый монитор и проверьте восстановление fullscreen.
|
||
4. Убедитесь, что клавиатура пользователя не открывает сервисные функции release-сборки.
|
||
5. Нажмите физическую кнопку `SERVICE`, проверьте PIN и блокировку после пяти ошибок.
|
||
6. Проверьте штатное удаление задачи через `Uninstall-ExchangerKioskTask.ps1 -WhatIf`, затем без `-WhatIf` на тестовом стенде.
|
||
|
||
## Восстановление
|
||
|
||
Держите отдельную административную учётную запись и документированный способ временно вернуть
|
||
Explorer. До обновления сохраняйте подписанный установочный пакет и последнюю рабочую версию.
|
||
Не удаляйте `appsettings.json.bak`: приложение использует её для восстановления после повреждения
|
||
или обрыва питания во время записи.
|