功能可用性
| 客户端模式 | Zero Trust 计划 ↗ |
|---|---|
| 所有模式 | 所有计划 |
| 系统 | 可用性 | 最低客户端版本 |
|---|---|---|
| Windows | ✅ | 2026.9.0.0 |
| macOS | ❌ | |
| Linux | ❌ | |
| iOS | ❌ | |
| Android | ❌ | |
| ChromeOS | ❌ |
卸载保护可防止 Windows 上的 Cloudflare One Client(原名 WARP)遭到未经授权的修改或卸载。启用此功能后,用户必须提供管理员生成的代码才能卸载客户端。未提供有效代码时,卸载操作会被阻止。
启用卸载保护后,Cloudflare One Client 会阻止以下操作,直到输入有效代码:
- 通过 Settings > Apps、控制面板或
msiexec卸载客户端。 - 使用
.msi安装程序升级或降级客户端。 - 通过客户端界面退出 Zero Trust 组织。
- 使用
warp-cli registration delete删除设备注册。
在 Windows 10 21H2 版(内部版本 19044)及更高版本上,客户端还会安装文件系统驱动程序。此驱动程序会阻止更改 C:\Program Files\Cloudflare 和 C:\ProgramData\Cloudflare 中的客户端文件,也会阻止更改客户端注册表项和服务。即使 Cloudflare One Client 服务已停止,该驱动程序仍会继续执行这些保护。
此驱动程序也会阻止更改 MDM 文件,例如 C:\ProgramData\Cloudflare\mdm.xml。若要更改受保护设备上的 MDM 文件,请先解锁客户端。
Cloudflare 提供两种代码。两种代码都会在你选择的时长后过期,时长范围为 1 到 24 小时。
设备专属卸载代码按固定的一小时区间计算,并与 UTC 整点对齐。有效时长从生成代码时所在 UTC 小时的开始时间起算。例如,在 UTC 时间 10:45 生成的一小时代码会在 UTC 时间 11:00 过期。
| 代码 | 格式 | 适用对象 | 适用场景 |
|---|---|---|---|
| 设备专属卸载代码 | 7 位数字 | 一台设备 | 用户需要手动卸载、升级或降级 |
| 账户范围卸载令牌 | 104 个字符的字符串 | 账户中的所有设备 | 你通过 MDM 或脚本卸载、升级或降级 |
Cloudflare One Client 会在本地验证这两种代码。设备无需连接互联网即可接受代码。
客户端接受代码后,会关闭卸载保护,直到代码过期后再延长一小时。这额外的一小时可让较慢的升级或卸载完成。此期限过后,卸载保护会自动重新启用。
卸载保护是设备配置文件中的一项设置,默认关闭。此设置的变更会记录在审计日志中。
- 在 Cloudflare 控制面板 ↗中,转到 Zero Trust > Team & Resources > Devices > Device profiles > General profiles。
- 找到要更新的设备配置文件,然后选择 Configure。
- 启用 Device Management Protection。
- 选择 Save profile。
如需更改设备配置文件,你需要一个具有 Zero Trust Write 权限的 API 令牌。
如需为自定义设备配置文件启用卸载保护,请向 Devices API发送 PATCH 请求:
Required API token permissions
At least one of the following token permissions is required:Zero Trust Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/devices/policy/$POLICY_ID" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"uninstall_protection": true
}'如需为默认设备配置文件启用卸载保护,请向 Devices API发送 PATCH 请求:
Required API token permissions
At least one of the following token permissions is required:Zero Trust Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/devices/policy" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"uninstall_protection": true
}'新更新的设置可能需要多达 10 分钟才能传播到设备。
设备必须先收到更新后的配置文件,卸载保护才会生效。生效后,即使设备处于离线状态,卸载保护仍会保持开启。
- 在 Cloudflare 控制面板 ↗中,转到 Zero Trust > Team & Resources > Devices。
- 在 Your devices 中选择设备。
- 选择 Delete 旁边的三个点 (...),然后选择 Generate uninstall code。
- 在 Duration (hours) 中,输入代码有效时长,范围为
1到24小时。 - 选择 Generate code。
- 复制 7 位代码并分享给用户。
向 Devices API发送 POST 请求。将 scope 设为 device,并将 device_id 设为设备 ID。将 duration_hours 设为 1 到 24 之间的值。API 令牌至少需要 Zero Trust Read 权限:
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/devices/override_codes" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"type": "uninstall_protection",
"scope": "device",
"device_id": "$DEVICE_ID",
"duration_hours": 4
}'响应中的 code 字段包含设备专属卸载代码:
{
"result": {
"code": "1234567"
},
"success": true,
"errors": [],
"messages": []
}如需查找设备 ID,请在 Team & Resources > Devices 中打开设备,并复制页面顶部的 ID。你也可以在设备上运行 warp-cli registration show 并复制 Device ID 值。
设备专属卸载代码仅适用于生成该代码的设备。
- 在 Cloudflare 控制面板 ↗中,转到 Zero Trust > Team & Resources > Devices > Management。
- 在 Client control 下找到 Account-wide uninstall token,然后选择 Generate token。
- 在 Duration (hours) 中,输入令牌有效时长,范围为
1到24小时。 - 选择 Generate token。
- 复制令牌。
向 Devices API发送 POST 请求。将 scope 设为 account,且不要包含 device_id。将 duration_hours 设为 1 到 24 之间的值。API 令牌至少需要 Zero Trust Read 权限:
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/devices/override_codes" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"type": "uninstall_protection",
"scope": "account",
"duration_hours": 4
}'响应中的 code 字段包含账户范围卸载令牌。
如需在受保护设备上卸载 Cloudflare One Client:
- 向管理员获取设备专属卸载代码。
- 启动卸载程序。例如,转到 Settings > Apps > Installed apps,然后卸载 Cloudflare One Client。
- 安装程序提示时,输入设备专属卸载代码并选择 Continue。
- 如果 Windows 请求管理员批准,请批准该请求。
客户端接受代码后,卸载会继续。如果选择 Cancel,卸载会停止,客户端仍保持安装状态。
如果代码错误或已过期,安装程序会显示错误,你可以重新输入代码。多次输入错误代码后,客户端会要求等待一段时间再重试。每次输错后,等待时间都会增加,最长为一分钟。
静默卸载需要账户范围卸载令牌。请将令牌通过 UNINSTALL_TOKEN 属性传给安装程序:
msiexec /x "<LOCAL_PACKAGE_PATH>" /qn UNINSTALL_TOKEN="<ACCOUNT_WIDE_UNINSTALL_TOKEN>"如需查找 .msi 软件包路径,请参阅卸载 Cloudflare One Client。
如果缺少令牌或令牌无效,msiexec 会以错误代码 1603 退出,客户端仍会保持安装状态。静默卸载不能使用设备专属卸载代码。
安装程序会将任何以 SYSTEM 账户运行的卸载视为静默卸载。这包括 Microsoft Intune 和其他 MDM 工具,即使使用 /qb 选项也是如此。
使用 .msi 安装程序升级或降级同样需要代码:
- 手动升级或降级:安装程序会提示输入设备专属卸载代码。
- 静默升级或降级:通过
UNINSTALL_TOKEN属性传入账户范围卸载令牌。
msiexec /i "Cloudflare_WARP_<VERSION>.msi" /qn UNINSTALL_TOKEN="<ACCOUNT_WIDE_UNINSTALL_TOKEN>"以下更新不需要代码:
- 通过客户端版本分配推送的更新。
- 从不支持卸载保护的客户端版本升级。升级完成后,卸载保护会启用。
静默降级到早于 2026.9.0.0 的客户端版本时,会忽略 UNINSTALL_TOKEN 属性。较早版本的安装程序不会将令牌传给已安装的客户端,因此降级会失败。
如需静默降级,请先使用账户范围卸载令牌解锁客户端,然后运行较早版本的安装程序:
warp-cli uninstall-protection unlock --account "<ACCOUNT_WIDE_UNINSTALL_TOKEN>"
msiexec /i "Cloudflare_WARP_<VERSION>.msi" /qn请在令牌有效期内运行这两个命令。更多信息,请参阅使用 warp-cli 解锁客户端。
手动降级不受影响。安装程序仍会照常提示输入设备专属卸载代码。
你可以使用 warp-cli 关闭设备上的卸载保护。在不经过安装程序提示的操作前使用此命令,例如退出 Zero Trust 组织。
使用设备专属卸载代码解锁:
warp-cli uninstall-protection unlock --device <DEVICE_SPECIFIC_UNINSTALL_CODE>使用账户范围卸载令牌解锁:
warp-cli uninstall-protection unlock --account <ACCOUNT_WIDE_UNINSTALL_TOKEN>检查卸载保护是否已启用,以及解锁后会关闭多久:
warp-cli uninstall-protection showUninstall protection: disabled
Grace period remaining: 7140 seconds如果 Cloudflare One Client 服务未运行,warp-cli 会将代码直接发送到文件系统驱动程序。此时请在提升权限的命令提示符中运行 warp-cli。
启用卸载保护后,客户端会禁用 Logout 按钮。
即使已启用允许设备离开组织,此限制仍然生效。如需退出,请先解锁客户端。
如需关闭卸载保护,请在设备配置文件中关闭 Device Management Protection。如果使用 API,请将 uninstall_protection 设为 false。
设备收到更新后的配置文件后会关闭卸载保护。离线设备会一直受到保护,直到重新连接。如需从离线设备移除客户端,请使用卸载代码。
请检查以下事项:
- 代码尚未过期。
- 设备专属卸载代码是为此设备生成的。代码不能用于其他设备。
- 代码是针对设备当前 ID 生成的。在设备上运行
warp-cli registration show,并检查Device ID是否与 Team & Resources > Devices 中该设备的 ID 匹配。 - 你在安装程序提示中输入了设备专属卸载代码。该提示不接受账户范围卸载令牌。
安装程序会将以 Uninstall authorization: 开头的行写入 Windows Installer 日志 ↗。如需创建日志,请在 msiexec 命令中添加 /l*v <PATH_TO_LOG_FILE>。
诊断日志包含被拒绝的代码以及文件系统驱动程序阻止的操作。