Skip to content

pili8/lan_ctrl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LAN Ctrl

局域网电脑控制工具。通过浏览器或 ESP 设备查看电脑状态,并执行关机、重启、锁屏、快捷启动程序等操作。

功能

  • 系统监控:CPU、内存、磁盘、网速、运行时长、闲置时间
  • 电源控制:关机、重启、锁屏、睡眠,支持倒计时和取消
  • 快捷启动:从网页启动预设程序、网址或目录
  • 设备检测:检测局域网设备在线状态
  • WoL:发送 Wake-on-LAN 唤醒包
  • 网页控制台:手机、平板、电脑浏览器均可访问
  • 系统托盘:状态图标、通知偏好、操作日志

运行方式

Windows 会隔离 SYSTEM 所在的 Session 0 和用户桌面 Session。为了做到"开机未登录可用"和"登录后能启动桌面程序",本工具使用同一个 EXE 的两种模式:

lan_ctrl.exe        -> SYSTEM 后台服务
lan_ctrl.exe --tray -> 用户桌面代理

后台服务由任务计划在开机时启动,负责 HTTP 服务、监控、关机等后台能力。用户登录后,桌面代理通过注册表 Run 自启动,负责在当前用户桌面启动快捷程序。

快捷启动链路:

网页请求
  -> SYSTEM 后台服务 :2425
  -> 命名管道 \\.\pipe\lan_ctrl
  -> 用户桌面代理
  -> ShellExecuteW 启动目标程序

快速开始

1. 安装依赖

python -m pip install psutil pyperclip pycaw comtypes pyinstaller

2. 源码运行

python pc_server.py

默认端口 2425,访问:

http://localhost:2425/?token=<你的 token>
http://<电脑IP>:2425/?token=<你的 token>

3. 打包为 EXE

python build.py

打包结果在 dist\lan_ctrl\ 目录,发布时复制整个文件夹,不要只复制 lan_ctrl.exe

4. 部署到开机自启

用管理员 PowerShell 执行,路径按实际位置调整:

schtasks /Create /TN PC-lan_ctrl /SC ONSTART /RU SYSTEM /RL HIGHEST /TR "D:\path\to\lan_ctrl.exe" /F
netsh advfirewall firewall add rule name="LAN Ctrl 2425" dir=in action=allow protocol=TCP localport=2425 profile=any
schtasks /Run /TN PC-lan_ctrl

验证服务是否监听:

netstat -ano | findstr :2425

看到 LISTENING 后即可从局域网访问。

登录代理

后台服务启动后会自动注册桌面代理自启动项:

LAN_Ctrl_Tray = "<lan_ctrl.exe 路径>" --tray

优先写入 HKLM\Software\Microsoft\Windows\CurrentVersion\Run,权限不足时退回 HKCU

未登录 Windows 时,监控、关机、重启等后台功能可用;快捷启动要等用户登录后由 lan_ctrl.exe --tray 代理执行。

网页控制台

仪表盘

  • 实时显示 CPU、内存、磁盘、网速等系统状态
  • 电源操作按钮:关机、重启、锁屏、睡眠
  • 快捷启动面板:一键启动预设程序

设置页面

设置项按分类折叠展示:

分类 内容
快捷启动 添加、编辑、删除快捷程序
设备管理 WoL 目标设备、在线检测
系统监控 应用名称、监控磁盘、关机倒计时
安全与服务 Token、PIN、重启服务、停止服务
关于 版本号、项目地址

系统托盘

桌面代理运行后在系统托盘显示图标,右键菜单:

打开控制台          直接打开网页控制台
────────────
ESP 接口       ▶   复制状态接口 / 复制关机接口
通知偏好       ▶   启用通知 / 各类通知开关
诊断           ▶   查看操作日志 / 打开程序目录 / 测试主服务
────────────
LAN Ctrl       ▶   关于 / 停止服务

托盘图标颜色表示服务状态:

颜色 状态
绿色 正常运行
灰色 通知已关闭
黄色 关机倒计时中
红色 主服务不可访问

配置文件

配置文件 settings.json 位于 EXE 同级目录,主要字段:

字段 说明
app_name 应用名称(可自定义)
app_version 版本号
disk_path 监控的磁盘分区
shutdown_countdown 默认关机倒计时秒数
pin 首次验证和敏感操作 PIN
token URL API Token
programs 快捷启动程序列表
wol_targets WoL / 在线检测设备列表

settings.json 包含 token、PIN、快捷程序路径等信息。复制到其他电脑时,通常需要按新电脑环境修改程序路径。

API

方法 路径 说明
GET /pc?token=<token> 返回 PC 状态 JSON
GET /api/status?token=<token> 返回 PC 状态 JSON
GET /shutdown?token=<token> 切换关机倒计时
POST /api/launch?token=<token> 启动快捷程序
GET /api/settings?token=<token> 获取设置
POST /api/settings?token=<token> 保存设置

ESP8266 可通过 /pc/shutdown 接口与本工具联动。

常用命令

python pc_server.py                          # 源码运行
python build.py                              # 打包 EXE
taskkill /F /IM lan_ctrl.exe                 # 结束进程(需管理员)
schtasks /Run /TN PC-lan_ctrl                # 启动服务
schtasks /Delete /TN PC-lan_ctrl /F          # 删除计划任务

目录结构

pc_server.py       后台服务入口
tray.py            用户桌面代理
templates/         网页控制台
settings.json      本机配置
build.py           PyInstaller 打包脚本
dist/              打包后的发布目录

build/dist/*.spec、日志和缓存文件不作为源码维护。

注意事项

  • PyInstaller 打包后普通用户看不到 .py 源码,但它不是强加密。懂逆向的人仍可能从包中提取和反编译出近似源码。
  • settings.json 包含敏感信息(token、PIN),请注意保护。
  • 系统托盘代理有单实例保护,不会重复启动。

更新日志

v1.1.0

  • 新增:应用名称可自定义(设置页面)
  • 新增:设置页面重新设计,分类折叠面板
  • 新增:托盘"关于"对话框
  • 新增:ESP 关机倒计时弹窗(tkinter 实现)
  • 优化:托盘图标美化,颜色随状态变化
  • 优化:托盘菜单结构调整,关于和停止合并为子菜单
  • 修复:Session 0 隔离问题,桌面操作迁移到托盘代理

v1.0.0

  • 初始版本

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages