客户端里勾选了"开机自启",重启后却没起来。这种情况在 Windows 上尤其常见,原因通常是下面三类之一。
Windows:先看它注册到哪了
Windows 的开机自启有四个位置,客户端可能注册在任意一个:
- 启动文件夹:
shell:startup打开的那个目录 - 注册表 Run 键:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run - 任务计划程序:最可靠,支持提权和延迟
- 系统服务:开机即启动,不依赖用户登录
检查方法:任务管理器 →「启动」标签页,这里能看到前两类。如果列表里没有你的程序,说明注册失败了,不是"被禁用"。
三种常见失败原因
一、权限不够
程序装在 Program Files 下,但注册表写在当前用户下,普通权限启动时读不到配置。改用任务计划程序,并勾选"使用最高权限运行"。
二、启动了但立刻退出
开机时网络还没就绪,客户端连不上服务器就自己退了。处理办法:给启动项加延迟(任务计划里可以设"延迟 30 秒")。
三、被安全软件拦了
部分安全软件会阻止程序修改启动项,且不弹提示。检查安全软件的"启动项管理",看有没有被静默禁用。
macOS:三种方式
一、登录项:系统设置 → 通用 → 登录项,这里是最常见的入口。
二、LaunchAgents:~/Library/LaunchAgents/ 下的 plist 文件,用户登录后加载。
三、LaunchDaemons:/Library/LaunchDaemons/,开机就加载,不需要登录。
检查命令:
launchctl list | grep 你的程序名
有输出说明已注册;没有说明没装上。
什么时候不该开机自启
开机自启会拖慢系统启动,也会在网络没就绪时产生一堆失败连接。以下情况建议关掉:
- 笔记本经常在没网的环境开机(咖啡厅、飞机)
- 只在特定场景用(出差、临时访问)
- 和其他网络工具冲突(两个客户端同时起会抢端口)
手动启动多花两秒,但省掉了开机后的一堆报错日志。
验证方法
不要靠"重启试试"来验证,太慢。直接看进程:
# Windows
tasklist | findstr 程序名
# macOS / Linux
ps aux | grep 程序名
刚开机时立刻跑一次,能查到说明自启成功。
💡 最稳的做法:用任务计划程序(Windows)或 LaunchDaemon(macOS),加 30 秒延迟。比启动文件夹和 Run 键可靠得多,也不受用户登录时机影响。