Skip to content

[体验优化] 缺少管理员权限检测、端口冲突检测和敏感文件清除机制 #43

@SonicBotMan

Description

@SonicBotMan

问题描述

目前 start.bat 在以下场景下会静默失败或用户体验差:

1. 未检测管理员权限

Windows 10/11 下,当用户以标准权限运行时,部分目录写入操作可能失败,但脚本无任何提示。

2. 未检测端口占用

GATEWAY_PORT=18789 被硬编码,如果该端口已被占用,程序启动失败,错误信息不够直观。

3. 缺少退出时的“零痕迹”机制

README 宣称“零痕迹运行”,但岚无:

  • 清除系统层级居少进程列表中的进程残留信息
  • 清除 Windows 事件日志中的启动记录
  • 清除 Windows 最近访问文件列表(MRU)中的记录
  • 管理 %TEMP% 下可能的临时文件

建议实施方案

Fix 1:在 start.bat 头部添加权限检测

rem === 权限检测(如需则提权)===
net session >nul 2>&1
if errorlevel 1 (
    echo [INFO] 当前不是管理员权限。
    echo [INFO] 尝试以管理员身份重新启动...
    powershell -NoProfile -Command "Start-Process '%~f0' -Verb RunAs"
    exit /b
)

注意:仅在首次安装阶段需要管理员权限,如果依赖已预置(即实现离线包后)应完全不需要管理员权限。

Fix 2:启动前检测端口可用性

rem === 端口冲突检测 ===
netstat -aon 2>nul | findstr ":%GATEWAY_PORT%" | findstr "LISTENING" >nul
if not errorlevel 1 (
    echo [WARN] 端口 %GATEWAY_PORT% 已被占用。
    echo [INFO] 尝试使用备用端口 18790...
    set GATEWAY_PORT=18790
    rem 或提示用户手动指定端口
)

Fix 3:在 stop.bat 中增加痕迹清理逻辑

rem === 痕迹清理 ===
echo [INFO] 清理临时文件...

rem 清除最近访问列表中的登记(需要进一步调研 Windows MRU 机制)
rem 将相关实现标记为 TODO 并单独开 issue 追踪

echo [OK]  清理完成。

关于“零痕迹”的现实建议

完全零痕迹在 Windows 上极难实现,建议将 README 中的表述修改为更准确的说法:

最小化系统痕迹 - 数据存储在 U 盘,无注册表写入,无系统目录安装

而非当前的“零痕迹”。


优先级

🟡 P1 - 影响安全声称的准确性,和目标用户对项目的信任感。

本 issue 由 AI 代码审阅自动生成,如有疑问欢迎讨论。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug🐛 Bug - Something isn't workingfeature✨ Feature - New feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions