Skip to content

Repository files navigation

Язык / Language: Русский · English

Windows PC Locker

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.

  1. Установите Python 3.10 или новее для Windows.
  2. Скачайте проект через 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

Сборка EXE

Для воспроизводимой сборки запустите:

build_exe.bat

Скрипт сам создаёт изолированное окружение .build-venv, обновляет инструменты сборки, устанавливает совместимый PyInstaller, очищает старые артефакты, собирает программу и запускает безопасный self-test уже собранного EXE. Глобальное Python-окружение проекта не загрязняется.

Готовый файл:

dist\Windows-PC-Locker.exe

Сборка onefile: пользователю не нужен установленный Python. Настройки и логи по контракту программы создаются рядом с EXE, поэтому программу следует хранить в папке, доступной пользователю для записи.

Как пользоваться

  1. Запустите программу.
  2. При необходимости включите опцию не переводить компьютер в спящий режим.
  3. Если нужно, задайте защитный таймер — например, на время длительной загрузки или обработки видео.
  4. Опцию не выключать монитор включайте только тогда, когда это действительно необходимо.
  5. Нажмите блокировку компьютера.
  6. Windows покажет стандартный экран блокировки, а фоновые задачи продолжат выполняться.
  7. После разблокировки программа может автоматически вернуть обычное поведение электропитания, если эта функция включена.

Программа не знает пароль или 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;
  • не требует подключения к интернету;
  • настройки и диагностика остаются локально.

Проверка и GitHub Actions

Локальная базовая проверка:

python -m py_compile computer_locker.pyw
python computer_locker.pyw --self-test

GitHub 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.

About

Утилита для Windows, которая безопасно блокирует сеанс, не прерывая выполнение фоновых задач; поддерживает предотвращение перехода в спящий режим, автоматическую остановку при разблокировке и компактный режим диагностики.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages