如何在 Windows 上卸载 Tailscale
Tailscale 把这台电脑接入一个私有网络(tailnet),卸载应用不等于离开这个网络,卸载后设备可能还留在 tailnet 的管理后台里,除非你退出登录或去后台里移除它。这份指南覆盖用 Tailscale.Tailscale winget 包按机器安装的 Tailscale。
卸载前先断开连接
打开 Tailscale 的托盘图标关掉联网,或者在终端里运行 tailscale down,再退出。
退出登录,或者去管理后台移除设备
卸载这台电脑上的 Tailscale 不会自动让设备失去授权。从托盘图标退出登录,或者登录 tailnet 的管理后台把这台设备移除。跳过这一步的话,应用卸载了,这台电脑还是会留在 tailnet 里,同一网络的其他人依然能看到它。从 tailnet 移除设备
先退出 Tailscale
Tailscale 有一个后台服务 tailscaled,还有一个托盘客户端 tailscale-ipn.exe,卸载前在任务管理器(Ctrl+Shift+Esc)里确认两个都没了。
用自带的卸载器移除应用
打开「设置 › 应用 › 已安装的应用」,找到 Tailscale,选择卸载,或者运行:
winget uninstall --id Tailscale.Tailscale
这次卸载需要管理员权限,因为 Tailscale 是按机器安装的,还跑着一个 Windows 服务。
数据分别在哪里
| 位置 | 里面是什么 | 如何处理 |
|---|---|---|
%ProgramData%\Tailscale |
这台设备的本地状态,和 tailnet 账号本身是分开的 | 退出登录或者在管理后台移除设备之后可以删 |
%LOCALAPPDATA%\Tailscale |
一小份按用户的状态 | 可以删 |
| 开始菜单和启动文件夹里的快捷方式 | 应用的快捷方式 | 卸载器会删 |
检查结果
卸载完成后运行下面几条只读命令:
Get-Process tailscaled, tailscale-ipn -ErrorAction SilentlyContinue
winget list --id Tailscale.Tailscale
Test-Path "$env:ProgramData\Tailscale"
Get-Service Tailscale -ErrorAction SilentlyContinue
Get-Process没有输出只表示未观察到匹配进程,被忽略的查询错误不能当作已经退出。winget list正常完成且没有匹配,才说明包记录已经没了;列出一行,说明卸载没完成。Test-Path "$env:ProgramData\Tailscale"返回True,说明这台设备的状态还在,大部分人会留着它,除非确定以后不会再让这台设备重新连回去。Get-Service Tailscale确认查询成功且没有匹配结果,说明这个 Windows 服务已经没了;返回一个服务对象,说明还登记着。
用 winget 安装时
winget uninstall 运行的是「设置 › 应用」用的同一个 MSI 卸载(msiexec /x ... /passive),删的是服务、程序文件、开始菜单和启动文件夹里的快捷方式,它不会主动动 %ProgramData%\Tailscale 或 %LOCALAPPDATA%\Tailscale。
Mole 会列出什么
对按机器安装的 winget 版 Tailscale:
- 开始菜单和公共启动文件夹里的快捷方式默认勾选。
%ProgramData%\Tailscale和%LOCALAPPDATA%\Tailscale会列出,但默认不勾选。- 这款应用登记的一条防火墙规则会在结果里报出来,但不会删。
- Tailscale 的 MSI 登记项没写安装位置,Mole 会自己从 Windows Installer 的组件登记表里找到程序目录,用来算大小、卸载前询问要不要先关掉它的进程,但这个目录本身不会作为可删除的残留列出来,因为它由 msiexec 自己收拾。
HKCU\Software\Tailscale IPN这个小的本地配置键不会列出来。
这次检查覆盖了什么
测试的是通过 winget 按机器安装的 Tailscale 1.102.4,在 ARM64 测试虚拟机上。测试用的电脑没有登录 tailnet,所以没有测试已登录设备的移除情况。
