局域网电脑控制工具。通过浏览器或 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 启动目标程序
python -m pip install psutil pyperclip pycaw comtypes pyinstallerpython pc_server.py默认端口 2425,访问:
http://localhost:2425/?token=<你的 token>
http://<电脑IP>:2425/?token=<你的 token>
python build.py打包结果在 dist\lan_ctrl\ 目录,发布时复制整个文件夹,不要只复制 lan_ctrl.exe。
用管理员 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、快捷程序路径等信息。复制到其他电脑时,通常需要按新电脑环境修改程序路径。
| 方法 | 路径 | 说明 |
|---|---|---|
| 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),请注意保护。- 系统托盘代理有单实例保护,不会重复启动。
- 新增:应用名称可自定义(设置页面)
- 新增:设置页面重新设计,分类折叠面板
- 新增:托盘"关于"对话框
- 新增:ESP 关机倒计时弹窗(tkinter 实现)
- 优化:托盘图标美化,颜色随状态变化
- 优化:托盘菜单结构调整,关于和停止合并为子菜单
- 修复:Session 0 隔离问题,桌面操作迁移到托盘代理
- 初始版本