Язык / Language: Русский · English
Windows PC Locker — лёгкая системная утилита для Windows, которая блокирует текущий сеанс стандартным механизмом LockWorkStation и при необходимости не даёт компьютеру уйти в сон, пока длительные фоновые задачи продолжают работу.
Программа не создаёт собственный экран пароля, не хранит PIN-коды и не заменяет безопасность Windows. За вход после блокировки отвечает стандартный экран Windows.
- прямую интеграцию с WinAPI через
ctypesбез сторонних runtime-зависимостей; - работу с
LockWorkStation, WTS API иSetThreadExecutionState; - корректное разделение блокировки Windows и управления энергосбережением;
- защиту от нескольких экземпляров приложения через Windows mutex;
- безопасный self-test, который проверяет системные интеграции без блокировки компьютера;
- компактную диагностику с жёстким ограничением объёма логов;
- проектирование системной утилиты с минимальными правами и без хранения учётных данных пользователя.
- стандартная блокировка сеанса через
LockWorkStation; - предотвращение автоматического сна во время блокировки;
- опциональное предотвращение отключения монитора;
- защитный таймер от 1 до 72 часов;
- автоматическое отключение режима предотвращения сна после разблокировки;
- отслеживание состояния сеанса через WTS API;
- retry при временных сбоях
SetThreadExecutionState; - защита от нескольких экземпляров через Windows mutex;
- сохранение настроек;
- опциональное диагностическое логирование;
- ротация и ограничение размера логов;
- компактные
diagnostic_context.jsonиlast_problem.jsonдля анализа проблем; - отсутствие сторонних Python-зависимостей.
Обычная блокировка Windows не гарантирует, что компьютер не уйдёт в сон по настройкам электропитания. Сон может прервать длительную загрузку, обработку или перевод видео, рендеринг, резервное копирование, вычисления и другие фоновые процессы.
Windows PC Locker позволяет заблокировать сеанс и временно поддерживать систему в активном состоянии без отключения стандартной Windows-аутентификации.
Программа использует только стандартную библиотеку Python и Windows API через ctypes.
- Установите Python 3.10 или новее для Windows.
- Скачайте проект через Code → Download ZIP или Git:
git clone https://github.com/zeter1/Windows-PC-Locker.git
cd Windows-PC-LockerДополнительная установка Python-пакетов не требуется.
Без консольного окна:
pythonw computer_locker.pywДля запуска с видимой консолью и диагностики:
python computer_locker.pywДля воспроизводимой сборки запустите:
build_exe.bat
Скрипт сам создаёт изолированное окружение .build-venv, обновляет инструменты сборки, устанавливает совместимый PyInstaller, очищает старые артефакты, собирает программу и запускает безопасный self-test уже собранного EXE. Глобальное Python-окружение проекта не загрязняется.
Готовый файл:
dist\Windows-PC-Locker.exe
Сборка onefile: пользователю не нужен установленный Python. Настройки и логи по контракту программы создаются рядом с EXE, поэтому программу следует хранить в папке, доступной пользователю для записи.
- Запустите программу.
- При необходимости включите опцию не переводить компьютер в спящий режим.
- Если нужно, задайте защитный таймер — например, на время длительной загрузки или обработки видео.
- Опцию не выключать монитор включайте только тогда, когда это действительно необходимо.
- Нажмите блокировку компьютера.
- Windows покажет стандартный экран блокировки, а фоновые задачи продолжат выполняться.
- После разблокировки программа может автоматически вернуть обычное поведение электропитания, если эта функция включена.
Программа не знает пароль или PIN пользователя и не участвует в процессе аутентификации.
Периодически вызывается SetThreadExecutionState с ES_SYSTEM_REQUIRED, пока активен защитный режим.
Дополнительный режим для сценариев, где экран тоже должен оставаться включённым. Для большинства фоновых задач он не нужен.
Приложение отслеживает состояние Windows-сеанса. После последовательности «заблокирован → разблокирован» поддержание активности автоматически выключается.
python computer_locker.pyw --self-testСамотест проверяет доступность нужных Windows API и настройки диагностики, но специально не блокирует компьютер и не включает предотвращение сна.
Windows-PC-Locker/
├─ computer_locker.pyw
├─ Настройки программы/
│ └─ settings.json
└─ Логи проблем/
├─ computer_locker.log
├─ computer_locker.log.1
├─ computer_locker.log.2
├─ diagnostic_context.json
└─ last_problem.json
Диагностика спроектирована компактно: логирование можно отключить, срок хранения настраивается, размер и число резервных логов ограничены, а diagnostic_context.json и last_problem.json дают компактный контекст для разбора сбоя.
- приложение не хранит пароль Windows;
- не заменяет стандартный lock screen;
- не требует подключения к интернету;
- настройки и диагностика остаются локально.
Локальная базовая проверка:
python -m py_compile computer_locker.pyw
python computer_locker.pyw --self-testGitHub Actions выполняет те же безопасные проверки на Windows runner. Для packaging-изменений CI дополнительно запускает build_exe.bat --ci и проверяет self-test собранного .exe. Реальную блокировку/разблокировку интерактивного пользовательского сеанса CI не проверяет.
SUPPORT.md— данные для воспроизводимого bug report;- GitHub Issues — обычные ошибки;
SECURITY.md— потенциальные уязвимости.
Текущая версия: 2.3 SAFE.
Открытая лицензия в настоящее время не предоставляется. Исходный код опубликован для портфолио и code review.