Windows 下 frpc 开机静默自启动:用任务计划程序彻底告别黑窗口

最近给家里那台 Win 机器配了 frp 做内网穿透,原本图省事直接双击 frpc 跑着,结果每次一关终端窗口穿透就断了,电脑重启还得重新手动敲命令。这体验实在太糟,于是研究了一下怎么让它在开机后无人值守地后台跑起来。

frp 这套东西分两端:服务端 frps 跑在云服务器上,客户端 frpc 跑在本地 Windows 上。本文就聚焦客户端这一侧——怎么配置 frpc,再用 Windows 自带的任务计划程序实现开机后台静默运行、无黑窗口,拿来做远程桌面这类内网访问正合适。

环境说明:Win10 / Win11,frp 新版,配置文件用的是 toml 格式。

先下载客户端

去 frp 的官方 GitHub 下载 windows amd64 版本的压缩包,解压到固定路径。我习惯放 D:\Program Files\frp。

这里有个坑得提前说:千万别放桌面,也别放带中文的路径,否则后面自启动读配置时很容易失败。解压完目录里最核心的两个文件是:

  • frpc.exe:客户端主程序
  • frpc.toml:客户端配置文件

配置 frpc.toml(以远程桌面为例)

用记事本打开 frpc.toml,把下面的内容改一改,替换成你自己的云服务器 IP、token 和端口:

1
2
3
4
5
6
7
8
9
10
serverAddr = "你的云服务器公网IP"
serverPort = 7000
auth.token = "你的服务端密钥"

[[proxies]]
name = "rdp-work"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 13389

几个参数简单说一下:

  • serverAddr 是云服务器的 IP,也就是 frps 部署的地址
  • serverPort 是 frps 监听的端口,跟服务端保持一致
  • auth.token 是连接密钥,服务端必须填一样的
  • localPort 是本地 RDP 端口,默认 3389
  • remotePort 是云服务器对外暴露的端口,外部访问时连 云IP:13389 就行

先手动测通再谈自启

配置完别急着搞自启动,先用 PowerShell 进目录跑一下确认能通:

1
2
cd D:\Program Files\frp
.\frpc.exe -c .\frpc.toml

日志里出现 start proxy success 就说明穿透成功了。注意,这时候只要关掉终端窗口,映射马上就断——这正是我们要用任务计划程序解决的事。

用任务计划程序做开机自启动

为什么选任务计划程序而不是什么开机启动文件夹?因为它有个关键优势:电脑开机、哪怕还没登录桌面,也能后台把隧道拉起来,锁屏状态下穿透依旧在线。这对远程桌面场景太重要了。

小提示:手动右键任务点【运行】测试时,会短暂闪一下黑框;但开机自动执行时是没有窗口的,所以别被测试时的黑框吓到。

1. 创建任务

Win 搜索打开【任务计划程序】,右侧点【创建任务】(注意不是【创建基本任务】,那个不够用),进入完整向导。

2. 常规选项卡

  • 名称填 frpc
  • 安全选项里勾选 不管用户是否登录都要运行
  • 再勾选 使用最高权限运行

3. 触发器选项卡

点【新建】,开始任务选 计算机启动时,确定保存。

4. 操作选项卡

点【新建】:

  • 操作选 启动程序
  • 程序或脚本填 D:\Program Files\frp\frpc.exe
  • 添加参数填 -c D:\Program Files\frp\frpc.toml

5. 条件选项卡

把 仅在计算机使用交流电源时才启动此任务 这个勾取消掉,这样笔记本断电时也能跑。

6. 设置选项卡

勾选 如果任务失败,按以下频率重新启动,间隔设成 1 分钟。这样 frpc 万一崩了能被自动拉起来,省心。

7. 保存

点确定后弹个输入密码的框,填本机管理员账号密码,任务就建好了。

8. 验证

重启电脑,打开任务管理器看进程列表里有没有 frpc.exe,有的话就说明开机自启成功,映射也自动建好了。

进阶:VBS 封装彻底消灭黑窗口

如果你登录桌面后还想手动跑任务、且完全不想看到黑框一闪,可以再封一层。在 frp 目录新建 start_frpc.vbs:

1
2
3
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run """D:\Program Files\frp\frpc.exe"" -c ""D:\Program Files\frp\frpc.toml""",0
Set WshShell = Nothing

然后把任务计划程序里【操作】改成:

  • 程序或脚本填 wscript.exe
  • 添加参数填 "D:\Program Files\frp\start_frpc.vbs"

这样无论是开机还是手动触发,都不会再冒出那个黑窗口了。

几个容易踩的坑

  1. 路径千万别带中文或空格,否则 toml 读不出来,自启动直接失败。
  2. 必须选 不管用户是否登录都要运行,否则锁屏、未登录状态穿透就断了。
  3. 云服务器安全组要放行 remotePort;本机防火墙要放行 frpc 出站。
  4. Windows 原生 RDP 有同账号限制:本机显示器已经登录了 Administrator(哪怕只是锁屏),远程再用同一个账号连 RDP 会报控制台会话被占用。
  5. 验证 frpc 状态最直接的方式:任务管理器里看 frpc.exe 进程在不在。

安全别忽视

穿透开着就等于在公网开了扇门,安全上几点建议:

  • 服务端 token 用高强度密码,别泄露。
  • 远程桌面端口建议在云安全组里限制源 IP,别全网开放,免得被人暴力破解。
  • Windows 管理员账号设个强密码,这个不用多说。

折腾完这套,现在家里那台机器基本上ping一下就能远程桌面连回去,重启也不用管,算是彻底解放双手了。希望这篇能帮到同样被黑窗口折磨的小伙伴。