一句话答案:Clash Verge Rev 服务模式安装失败或反复变灰,核心诱因在于四点:标准用户权限无法通过 UAC 向 Windows SCM 服务控制管理器注册特权服务(报错 Access is denied)、旧版残留服务因句柄被占用而陷入“标记为删除(Marked for deletion)”挂起死锁、安装路径中的空格导致 ImagePath 缺少引号转义,或杀毒软件主动防御拦截了驱动注册。通过管理员命令行手动执行 sc delete 清理残留并以管理员权限启动客户端,即可 100% 极速自愈。
本文要点
- 核心要点:服务模式的核心是向系统注册以 LocalSystem 特权运行的独立后台服务 clash_verge_service。
- 核心要点:遇到 Access is denied 时,必须鼠标右键以管理员身份启动 Clash Verge 再执行安装。
- 核心要点:提示 Marked for deletion 说明旧服务句柄未释放,关闭 services.msc 并重启电脑可瞬间解除死锁。
- 核心要点:服务模式一旦成功点亮绿灯,开机即会自动由系统内核拉起,无需每次手动操作。
一、Windows 服务控制管理器 (SCM) 与 UAC 权限模型推演
在深入排查服务模式安装故障之前,必须首先从 Windows 操作系统的底层安全边界理解:为什么一个代理工具需要注册系统服务?
+-----------------------------------------------------------------------------------+
| Windows 服务控制管理器与服务模式提权全景图 |
+-----------------------------------------------------------------------------------+
│
[普通用户运行 Clash Verge (Medium 完整性级别,受限令牌)]
│
▼
+---------------------------------------+
| 请求触发 UAC 提升 (Run as Admin) |
| 获取 High 完整性级别令牌 (SE_DEBUG特权)|
+---------------------------------------+
│
▼
+---------------------------------------+
| 打开 SCM 服务管理器 (OpenSCManager) |
| 申请 SC_MANAGER_CREATE_SERVICE 最高权限 |
+---------------------------------------+
│
▼
+---------------------------------------+
| 创建服务条目 (CreateServiceW) |
| 名称: clash_verge_service |
| 账户: NT AUTHORITY\SYSTEM |
| 路径: "C:\...\clash-verge-service" |
+---------------------------------------+
│
▼
+---------------------------------------+
| 写入注册表 Services 根键并拉起守护进程 |
| 底层网络栈与 Wintun 具备全盘接管特权 |
+---------------------------------------+
- UAC 用户账户控制与完整性级别(Integrity Levels)
自 Windows Vista / 7 以来,即便当前登录的用户是 Administrator 管理员,其日常运行的应用程序默认也只持有受限的中等完整性令牌(Medium Integrity Token)。该令牌被操作系统核心明确禁止向受保护的系统目录(C:\Windows)及核心注册表树(HKLM\SYSTEM)写入数据。 - 服务控制管理器(Service Control Manager, SCM)
Windows 底层通过 SCM(由services.exe托管)统一调度系统服务。安装服务模式本质上是调用 Win32 原生 APICreateServiceW向系统注册一个名为clash_verge_service的持久化条目,并赋予其 NT AUTHORITY\SYSTEM(最高系统级特权,甚至高于 Administrator) 身份运行。 - 特权守护与普通前端的解耦
一旦服务成功注册并拉起,真正的内核驱动调用与路由表注入全部由该后台服务静默执行。前端图形界面(Tauri UI)仅作为普通程序通过本地命名管道(Named Pipe)向后台服务发送控制报文。这不仅让日常使用无需反复点击 UAC 确认弹窗,更让 TUN 模式的开启与关闭达到了毫秒级的顺滑体验。
二、服务模式安装故障类型与全息排障矩阵
下表系统梳理了服务模式在安装、启动与运行过程中最常见的异常状态:
| 故障现象与报错特征 | 视觉表象 | 触发根本诱因深度分析 | 解决耗时 | 推荐修复方案 |
|---|---|---|---|---|
| Access is denied (0x5) | 弹窗报错拒绝访问 | 客户端运行于普通标准用户权限,未能触发 UAC 提权 | 1 分钟 | 右键以管理员身份运行客户端后再点击安装 |
| Marked for deletion (1072) | 提示服务已标记为删除 | 旧版服务句柄被任务管理器或 services.msc 锁死 | 2 分钟 | 关闭所有管理窗口,重启计算机释放内核句柄 |
| 图标短暂变绿后瞬间变灰 | 服务启动后立即自杀退出 | 缺少依赖 VC++ 运行库,或二进制文件与系统架构不兼容 | 2 分钟 | 安装 VC++ 2015-2022 运行库,检查 64位架构 |
| 未带引号路径漏洞 (1053) | 提示服务未及时响应启动 | 安装路径包含空格且注册表 ImagePath 缺失半角双引号 | 2 分钟 | 在注册表中为服务可执行路径手动添加双引号包裹 |
| 杀毒软件主动防御拦截 | 弹窗提示拒绝或报毒 | 360/火绒等将创建系统服务行为判定为未知高危木马 | 1 分钟 | 在杀毒软件中点击允许并添加目录至信任排除区 |
| 服务名冲突 (1073) | 提示指定的服务已存在 | 历史遗留版本或竞品客户端占用了同名服务键值 | 1 分钟 | 管理员终端执行 sc delete clash_verge_service |
| 域控安全策略锁死 | 提示已被系统策略阻止 | 企业 Active Directory 组策略限制标准域账户安装驱动 | 无法破解 | 改用不需要特权的系统代理模式,或联系网管 |
三、实战排障:8 大极端边界服务安装故障深度归因与自愈操作
场景 1:点击安装弹窗报错 “Failed to install service: Access is denied”
- 故障现象:在设置界面点击“安装服务模式”的一瞬间,弹窗提示红字错误
Access is denied (os error 5)。 - 底层归因:当前打开 Clash Verge 时,用户仅仅是普通双击启动,操作系统并未向该进程颁发高完整性级别(High Integrity)的令牌。当程序内部尝试通过
OpenSCManagerW申请SC_MANAGER_CREATE_SERVICE特权时,内核安全子系统直接判定越权并拦截。 - 精准解决步骤:
- 彻底退出当前的 Clash Verge 客户端(在右下角系统托盘小猫图标上右键,点击“彻底退出”)。
- 在桌面找到 Clash Verge 的快捷方式,鼠标右键点击并选择“以管理员身份运行”。
- 在弹出的系统 UAC 提示窗口中点击“是”。
- 再次进入软件“设置”页面,点击“服务模式”旁边的“安装”,瞬间秒级点亮绿灯!
场景 2:错误代码 1072 “The specified service has been marked for deletion”
- 故障现象:多次尝试重新安装服务模式,日志持续报错
service marked for deletion (os error 1072)。 - 底层归因:系统中此前已经存在旧版本的服务守护进程。在卸载或重装过程中,系统服务控制台(
services.msc)、事件查看器或任务管理器正打开着该服务的引用句柄。根据 Windows 内核规范,只要存在任意活跃句柄,已删除的服务就会一直处于“挂起标记”状态,系统严厉阻止创建同名新服务。 - 精准解决步骤:
- 关闭当前屏幕上所有打开的设置面板、命令提示符、任务管理器以及
services.msc窗口。 - 按下快捷键组合
Ctrl + Alt + Del,选择“重启”计算机。 - 计算机重启后,操作系统内核对象管理器会自动清空所有孤儿句柄并彻底注销该旧服务。
- 重新开机后,以管理员身份运行客户端点击安装即可。
- 关闭当前屏幕上所有打开的设置面板、命令提示符、任务管理器以及
场景 3:服务安装成功后图标由绿变灰,并在事件日志中提示崩溃
- 故障现象:安装时提示成功,但几秒钟后服务模式的图标自动变灰,手动去
services.msc点击“启动”时提示错误 1067: 进程意外终止。 - 底层归因:后台服务程序
clash-verge-service.exe依赖微软 Visual C++ 运行时库(MSVCP140.dll/VCRUNTIME140.dll)。如果在某些精简版系统或刚重装的电脑上未安装 VC++ Redistributable,该后台服务在执行入口函数时会发生缺失依赖项段错误并立即崩溃。 - 精准解决步骤:
- 打开微软官方网站,下载并安装 Microsoft Visual C++ 2015-2022 Redistributable (x64) 官方运行库。
- 安装完毕后,无需重启电脑,直接在 Clash Verge 中再次点击“启动服务模式”即可稳定运行。
场景 4:安装路径包含特殊空格导致 ImagePath 引号转义丢失
- 故障现象:客户端安装在
C:\Program Files (x86)\Clash Verge\...下,启动服务提示“系统找不到指定的文件”。 - 底层归因:老版本安装逻辑在写入注册表
HKLM\SYSTEM\CurrentControlSet\Services\clash_verge_service的ImagePath字符串值时,由于字符串拼接失误,未在完整路径两端加上转义的英文半角双引号。Windows 服务调度引擎将空格前面的C:\Program识别为了可执行文件名称,导致调度失败。 - 精准解决步骤:
- 按下
Win + R输入regedit打开注册表编辑器。 - 导航至:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\clash_verge_service。 - 双击右侧的
ImagePath,在数值数据的最前端和最后端手动补全双引号,例如将其修改为:"C:\Program Files (x86)\Clash Verge\resources\clash-verge-service.exe"。 - 点击确定保存,随后在服务控制台重启该服务。
- 按下
场景 5:360 安全卫士与火绒主动防御模块的拦截与自愈
- 故障现象:点击安装后客户端无反应,稍后右下角弹出杀毒软件提示“已拦截未知程序写入系统驱动”。
- 底层归因:现代杀毒软件的“内核防护/主动防御”模块通过 Hook 了
NtCreateKey等系统调用。当检测到非微软官方签名的第三方应用向系统服务区写入开机自启项时,会自动触发防御拦截策略。 - 精准解决步骤:
- 打开杀毒软件(如火绒安全或 360 安全卫士),进入“安全日志”或“防护拦截记录”。
- 找到针对
clash-verge或clash-verge-service的拦截日志,点击“信任并恢复”。 - 在杀毒软件的“信任区”或“排除白名单”中,将整个 Clash Verge 安装目录列入排除项。
场景 6:老版本 CFW 遗留服务冲突占用命名空间
- 故障现象:系统提示服务已存在,无法覆盖安装。
- 底层归因:部分老版本客户端使用了完全相同的服务命名或争抢了底层端口资源。
- 精准解决步骤:
在管理员 PowerShell 终端中执行以下排查命令,强行清空旧服务:
Stop-Service -Name "clash_verge_service" -Force -ErrorAction SilentlyContinue Stop-Service -Name "clash-core-service" -Force -ErrorAction SilentlyContinue sc.exe delete "clash_verge_service" sc.exe delete "clash-core-service"
场景 7:macOS 特权 Helper 守护进程授权失败排查
- 故障现象:macOS 用户点击安装 Helper 时,系统弹窗要求输入 Touch ID 或开机密码,输入后提示授权失败。
- 底层归因:macOS 系统的
/Library/PrivilegedHelperTools目录权限被系统或第三方清理工具修改,导致安装程序无法向其写入二进制辅助文件。 - 精准解决步骤:
打开 macOS 终端,执行以下权限修复命令:修复目录权限后,重新返回 Clash Verge 客户端点击授权安装即可。
sudo chown root:wheel /Library/PrivilegedHelperTools sudo chmod 755 /Library/PrivilegedHelperTools
场景 8:域控环境权限受限的标准域账户替代方案
- 故障现象:在企业内网配发的办公电脑上,无论怎么点击“以管理员身份运行”,都弹出需要输入企业 IT 管理员账户凭据的窗口。
- 底层归因:企业域组策略从内核层面剥夺了普通员工电脑的本地管理员权限,严禁安装一切底层系统服务与虚拟驱动。
- 精准解决步骤:
在受限办公环境中,彻底放弃使用 TUN 模式与服务模式。直接使用 Clash Verge 的“系统代理(System Proxy)”模式。系统代理只需修改当前用户的注册表用户分支(
HKCU),完全不需要任何管理员提权,既能满足日常出海办公需求,又绝不违背企业合规审计。
四、场景化决策选型卡片
对于不同运行环境下的权限规划,建议采用以下决策模型:
::: tip 💡 个人自由环境的黄金配置 在属于自己的个人电脑(拥有完全 Administrator 权限)上,强烈推荐首次安装完成后立即安装并常驻服务模式。一旦服务模式就绪,后续无论重启电脑还是切换 Wi-Fi,TUN 模式均可秒级无感唤醒,真正达到“开机即全盘穿透”的极致丝滑体验。 :::
::: warning ⚠️ 企业合规与高敏感环境
在企业域控办公电脑、高校受限机房或搭载严格 DLP 审计软件的终端上,切勿强行尝试破解安装内核服务或尝试提权漏洞,以免触发企业安全运维部门的安全告警事件。
在这种受限网络环境中,改用纯粹的应用层系统代理,配合高可用商业专线保障日常业务:
佣金与商业合规披露声明:本站所收录或提及的部分网络服务包含推广导流链接;通过相关链接注册可能会为本站带来一定的运维佣金,但这绝不会对您的实际订购价格产生任何影响。本站始终坚守独立客观的技术评测底线。请使用者严格遵守中华人民共和国网络安全法律法规,文明合法使用网络资源。
五、自动化服务模式强制注入与自愈脚本
以下由 ClashNet 技术实验室精心编写的脚本,支持在后台自动完成“残留服务清理”、“依赖项探测”与“服务手动注册”:
Windows 自动化服务模式强制注册与自愈脚本 (PowerShell)
# ==============================================================================
# ClashNet 官方出品:服务模式 (Service Mode) 强制注册与排障工具 (PowerShell)
# 请使用管理员身份打开 PowerShell 运行
# ==============================================================================
Write-Host "==========================================================" -ForegroundColor Cyan
Write-Host " Clash Verge 服务模式 (Service Mode) 强制注册与自愈工具" -ForegroundColor Cyan
Write-Host "==========================================================" -ForegroundColor Cyan
# 1. 检测管理员最高运行特权
$isAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (!$isAdmin) {
Write-Host "[-] 严重错误:当前终端不是以管理员身份运行!" -ForegroundColor Red
Write-Host " 请右键点击 PowerShell 选择【以管理员身份运行】后重试。" -ForegroundColor Yellow
exit
}
# 2. 扫描并彻底清理旧版挂起服务
Write-Host "`n[*] 正在扫描并清理潜在的旧版冲突服务..." -ForegroundColor Yellow
$serviceName = "clash_verge_service"
$existing = Get-Service -Name $serviceName -ErrorAction SilentlyContinue
if ($existing) {
Write-Host " -> 检测到已存在服务 [$serviceName],当前状态: $($existing.Status)" -ForegroundColor Yellow
Stop-Service -Name $serviceName -Force -ErrorAction SilentlyContinue
sc.exe delete $serviceName
Write-Host " [+] 已执行强制注销与删除清理指令。" -ForegroundColor Green
} else {
Write-Host " [+] 系统中无旧版服务残留。" -ForegroundColor Green
}
# 3. 寻找客户端目录中的服务可执行文件
Write-Host "`n[*] 正在定位客户端目录下的服务二进制文件..." -ForegroundColor Yellow
$possiblePaths = @(
"C:\Program Files\Clash Verge\resources\clash-verge-service.exe",
"C:\Program Files (x86)\Clash Verge\resources\clash-verge-service.exe",
"$env:LOCALAPPDATA\Programs\clash-verge\resources\clash-verge-service.exe"
)
$targetExe = $null
foreach ($path in $possiblePaths) {
if (Test-Path $path) {
$targetExe = $path
break
}
}
if ($targetExe) {
Write-Host " [+] 成功找到服务执行文件: $targetExe" -ForegroundColor Green
# 4. 手动调用 sc.exe 注入系统服务并添加严格引号包裹
Write-Host "`n[*] 正在向 Windows SCM 注册服务..." -ForegroundColor Yellow
$binPathQuoted = "`"$targetExe`""
$scArgs = "create $serviceName binPath= $binPathQuoted start= auto DisplayName= `"Clash Verge Service`""
Start-Process -FilePath "sc.exe" -ArgumentList $scArgs -Wait -NoNewWindow
# 启动服务
Write-Host "[*] 正在启动服务..." -ForegroundColor Yellow
Start-Process -FilePath "sc.exe" -ArgumentList "start $serviceName" -Wait -NoNewWindow
$check = Get-Service -Name $serviceName -ErrorAction SilentlyContinue
if ($check -and $check.Status -eq "Running") {
Write-Host "`n[+] 恭喜!服务模式已成功强制安装并处于活跃运行状态!" -ForegroundColor Green
Write-Host " 现在打开 Clash Verge 客户端,界面将自动显示绿灯!" -ForegroundColor Green
} else {
Write-Host "`n[-] 服务创建完成,但未能成功拉起。请检查是否安装了 VC++ 运行库。" -ForegroundColor Red
}
} else {
Write-Host " [-] 未在常规路径找到 clash-verge-service.exe,建议重新下载安装包进行修复安装。" -ForegroundColor Red
}
Write-Host "`n==========================================================" -ForegroundColor Cyan
Write-Host " 自愈执行完毕!" -ForegroundColor Green
Write-Host "==========================================================" -ForegroundColor Cyan
macOS 终端特权 Helper 守护进程重置命令 (Bash)
#!/usr/bin/env bash
# ==============================================================================
# ClashNet 官方出品:macOS 特权 Helper 守护进程重置脚本
# ==============================================================================
echo -e "\x1b[36m=== 1. 检查 macOS Privileged Helper 状态 ===\x1b[0m"
HELPER_PATH="/Library/PrivilegedHelperTools/io.github.clash-verge-rev.helper"
if [ -f "$HELPER_PATH" ]; then
echo -e "\x1b[32m[+] 检测到 Helper 二进制文件存在。\x1b[0m"
echo "正在修复其所属权限为 root:admin (0755)..."
sudo chown root:admin "$HELPER_PATH"
sudo chmod 755 "$HELPER_PATH"
echo -e "\x1b[32m[+] 权限修复完成!请重新启动客户端。\x1b[0m"
else
echo -e "\x1b[31m[-] 未检测到 Helper 工具,请在客户端设置中点击【安装服务】。\x1b[0m"
fi
六、长尾技术深度常见问答 (FAQ)
Q1:为什么开启 TUN 模式之前,必须强制安装“服务模式(Service Mode)”?
因为 Windows 对网络驱动与系统核心路由表拥有严苛的安全保护。普通权限的应用程序(运行于中等完整性级别)被操作系统严厉禁止创建虚拟网卡(Wintun)和接管 0.0.0.0/0 默认网关。如果不安装服务模式,每次开机启动客户端都必须弹出 UAC 黄色警告弹窗要求用户手动输入密码提权;而通过向系统注册以 NT AUTHORITY\SYSTEM 最高权限静默常驻的后台守护服务,Clash Verge 就能在普通权限下随时随地一键无感启闭 TUN 模式。
Q2:手动在命令行安装成功后,回到客户端界面依然显示灰色未安装,怎么办?
请彻底退出客户端并在任务栏托盘中右键点击“完全退出”,随后重新双击打开 Clash Verge。这是因为前端图形界面在运行时维护了一个状态缓存轮询器;通过完全重启客户端,程序在启动初始化时会重新调用 SCM API 探测 clash_verge_service 的运行状态,界面右侧的图标便会瞬间由灰转绿。
Q3:在管理员 CMD 中执行 sc delete 提示成功,但再次点击安装依然报错?
如果虽然返回了 [SC] DeleteService 成功,但如果此时你的电脑中正打开着“服务管理控制台(services.msc)”、“任务管理器”或“事件查看器”,这些系统工具会一直持有该服务注册表键值的打开句柄!只要句柄未完全关闭,操作系统就只能将该服务标记为“待删除”状态并阻止同名服务的重新注册。必须关闭所有管理窗口并重启一次计算机以彻底回收句柄。
Q4:服务模式安装成功并亮绿灯后,需要每次开机都手动点一次吗?
完全不需要!服务在注册时被配置为“自动启动(Automatic)”类型。这意味着每次 Windows 操作系统冷启动或重启时,Windows 内核在加载系统网络栈的同时就会自动优先拉起该后台守护服务,一劳永逸。
Q5:安装路径在包含空格的目录下(如 C:\Program Files...),为什么会导致服务崩溃?
这是 Windows 命令解析器历史悠久的“未带引号路径漏洞(Unquoted Service Path)”。如果服务可执行文件路径为 C:\Program Files\Clash Verge\service.exe 且在向注册表写入时未将其用半角双引号包裹,系统在启动服务时会尝试先去执行 C:\Program.exe!由于找不到该文件,服务直接报错 找不到指定的文件 并秒退。
Q6:火绒或 360 安全卫士弹窗提示“正在添加系统驱动和服务”,该怎么选?
必须毫不犹豫地点击**“允许本次操作”并勾选“记住我的选择”**!服务模式正是通过合法的 Windows API 向系统注入驱动与服务。如果安全软件误将其拦截,服务安装进程就会在关键注册表写入环节被掐断,导致半生不熟的损坏服务残留在系统中。
Q7:如果我以后打算彻底卸载 Clash Verge,该怎么把服务模式清理干净?
推荐在卸载前,先在 Clash Verge 的“设置”界面中点击“卸载服务模式”按钮;如果已经删除了软件,只需以鼠标右键“以管理员身份运行”终端,输入并执行 sc.exe delete clash_verge_service,操作系统就会瞬间物理抹除该服务的全部注册表项与残留。
Q8:在公司内网域控电脑上提示“系统管理员已阻止此操作”,普通员工如何解决?
在加入 Windows Active Directory 域的大型企业中,IT 部门通常通过组策略(GPO)锁死了标准域账户安装驱动与系统服务的特权。此时普通员工无法通过常规手段绕过限制。建议向企业 IT 管理员申请临时管理员提权,或者在日常工作中放弃 TUN 模式,改用不需要任何系统特权的普通系统代理(System Proxy)模式。