# -*- coding: utf-8 -*- """更新交付说明:文件名改了,而且不需要装 Python。""" from __future__ import annotations import sys from pathlib import Path PKG = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote\_build\package.py") NEW = '''QUICKSTART = f"""======================================================== 局域网遥控 · 被控端(Windows) 版本 {VERSION} ======================================================== *** 不需要装 Python *** 这个目录里的 LanRemote-Agent.exe 是编译好的独立程序, 拷到任何一台 Windows 电脑上双击就能跑。 【装完之后怎么用】 1) 双击 LanRemote-Agent.exe 2) 弹出一个小窗口,让你输入 6 位数字(配对码) 自己定一个记得住的,比如 789113 下面有两个勾: [x] 设置开机自启(开机后自动在后台运行) [x] 顺便放行防火墙(需要管理员确认一次) 3) 点「确定,开始使用」 → 会弹一次 Windows 的管理员确认(UAC),点「是」 → 黑色终端窗口一闪,它在一键修复防火墙 → 窗口全部消失,程序转入后台静默运行 4) 手表上打开 App → 点「自动搜索电脑」→ 点搜到的电脑 → 输入你设的 6 位数字 5) 以后开机就直接在后台跑,屏幕上什么都没有; 手表打开 App 会自动连上,数字都不用再输。 【目录里这几个文件】 LanRemote-Agent.exe 主程序。双击就是上面第 1 步。 wlzj.bat 网络自检。连不上时跑它,看手表的包到底有没有到电脑。 xffhq.bat 一键修复防火墙。右键 →「以管理员身份运行」。 fxfhq.bat 同上,是程序自动生成的放行脚本,也可以右键提权运行。 先看这个.txt / 使用说明.txt 就是本文。 三个 .bat 都不需要装 Python。 【连不上?按这个顺序来】 1) 确认被控端在跑 任务管理器里能看到 LanRemote-Agent.exe 没有的话:LanRemote-Agent.exe --setup 2) 右键 xffhq.bat →「以管理员身份运行」,点「是」 3) 还不行 → 双击 wlzj.bat(网络自检) 它会监听 90 秒,看手表的请求有没有到达这台电脑: 收到连接 -> 网络是通的,问题在电脑这边 一直没动静 -> 包没到电脑,多半路由器开了「AP 隔离」 4) 手表上:首页「连不上?点这里诊断」 【命令行参数】(一般用不到) LanRemote-Agent.exe --setup 重新打开设置窗口 LanRemote-Agent.exe --silent 直接静默运行 LanRemote-Agent.exe --add-device 10 静默运行 + 开放 10 分钟配对 LanRemote-Agent.exe --autostart on|off 开关开机自启 LanRemote-Agent.exe --status 看当前状态 LanRemote-Agent.exe --netcheck 90 网络自检(同 wlzj.bat) LanRemote-Agent.exe --fix-firewall 提权修复防火墙 LanRemote-Agent.exe --reset-devices 清空已配对设备 【关于安全】 配对码是你自己设的,只存在这台电脑的 data\\\\settings.json 里。 一台设备都没配对过时配对是开着的(否则你设完码会连不上自己); 第一台配对成功后自动关闭。 配错 10 次锁 5 分钟(按来源 IP 分别计,别人锁不住你)。 屏幕共享时右下角会出现一条红色小提示 —— 这是故意的:有人在看你的屏幕时,屏幕前面的人应该知道。 """''' def main() -> int: text = PKG.read_text(encoding="utf-8") lines = text.splitlines(keepends=True) start = end = None for i, line in enumerate(lines): if start is None and line.startswith("QUICKSTART"): start = i continue if start is not None and line.rstrip() == chr(34) * 3: end = i break if start is None or end is None: print(f" [失败] 没找到 QUICKSTART (start={start}, end={end})") return 1 text = "".join(lines[:start]) + NEW + "\n" + "".join(lines[end + 1:]) PKG.write_text(text, encoding="utf-8") print(" package.py: 说明已更新") import ast try: ast.parse(PKG.read_text(encoding="utf-8")) print(" package.py: 语法 OK") except SyntaxError as exc: print(f" package.py: 语法错误 {exc}") return 1 return 0 if __name__ == "__main__": sys.exit(main())