# -*- coding: utf-8 -*- """修:用户改了配对码之后,被控端要能用新码重新登记。 问题: self.code 只在 start() 里设一次(第 257 行), 之后只有中转"按单设备单码改回旧码"时才会更新(第 448 行)。 所以用户在设置里改了配对码,_register 还是拿旧的报 —— 如果旧码被别人占了,就会一直卡在冲突里,永远好不了。 修法: _register 开头从设置里重新读一次配对码。 这本来也该这样:设置是唯一的事实来源。 """ from __future__ import annotations import sys from pathlib import Path RELAY = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote\windows" r"\lanremote\relay.py") OLD = ''' def _register(self) -> None: payload = json.dumps({''' NEW = ''' def _register(self) -> None: # 每次登记都从设置里重新读配对码。 # 用户可能刚改过(比如上一个码被别的设备占了), # 不重读就会一直拿旧码去报,永远卡在冲突里出不来。 latest = str(self.store.pairing_code() or "").strip() if latest and latest != self.code: self._log(f"配对码已改为 {latest},用新的重新登记") self.code = latest payload = json.dumps({''' def main() -> int: text = RELAY.read_text(encoding="utf-8") if "每次登记都从设置里重新读配对码" in text: print(" 已经修过") return 0 if OLD not in text: print(" [失败] 锚点没找到") return 1 text = text.replace(OLD, NEW, 1) RELAY.write_text(text, encoding="utf-8", newline="\n") import ast try: ast.parse(text) print(" 语法 OK") except SyntaxError as exc: print(f" 语法错误: {exc}") return 1 print(" 修好了:_register 会用最新的配对码") return 0 if __name__ == "__main__": sys.exit(main())