配置教程 精选 标签: PROCESS-NAME Windows Mihomo

Clash PROCESS-NAME 在 Windows 不生效?权限与路径写法排查

许多读者照教程在 rules 里加了 PROCESS-NAME,期望某个 .exe 一律走指定策略组,结果连接日志里仍是 DIRECT,或规则像是从未被评估。与单纯「换节点」不同,这往往是进程名字符串没对上真实映像路径权限不足以 enumerate 其他用户的进程更靠前的规则已 MATCH,或流量根本没经过能看进程名的内核路径(例如仅系统代理、未开 TUN 时的部分程序)。本文聚焦 WindowsMihomo(Clash.Meta)系内核与常见 GUI 客户端,逐步对齐路径写法、UAC、规则顺序与模式;场景化游戏与语音的 UDP 细节仍建议配合 《Steam 进程分流与 UDP》《Discord 进程分流》《TUN 路由与防火墙排障》 阅读。请仅将代理用于合规用途。

约 18 分钟阅读
Clash 编辑部

一、PROCESS-NAME 到底在匹配什么

Mihomo 文档语义下,PROCESS-NAME 一类规则依赖内核在发起连接时拿到的本机进程标识:常见实现里,这是可执行文件路径或文件名(取决于规则写法与内核版本),而不是窗口标题、也不是远程服务器的进程名。若你心里的「进程名」是任务管理器里看到的简短名字,而规则里写成了带盘符的整段路径,或反之只写了 app.exe 但实际连接来自 Update.exe 子进程,就会出现策略永远不命中的错觉。

因此排查的第一步永远是:用资源管理器或任务管理器记下真实映像路径,再用同一台机器上「当前生效的」配置对照——订阅合并、Profile 多文件、GUI 的「覆写」都可能让编辑器里看到的内容与实际运行内核加载的 rules 不一致。若客户端支持查看最终合并后的规则列表或导出运行配置,优先以那份为准。

自检习惯:改规则后重载配置或重启内核,再在目标程序里制造一条新连接(而不是只看旧会话),否则仍是「老规则 + 旧缓存」的误判。

二、常见表现:为什么像「规则没写」

典型的用户描述包括:浏览器里按域名分流正常,唯独某桌面软件始终直连;或策略组明明选了代理节点,日志里该会话仍是 DIRECT。这类现象往往被误认为是「节点坏了」,但若 PROCESS-NAME 根本没匹配上,后续策略组再漂亮也不会被引用。

另一类困惑来自混淆规则类型:有的用户把进程写在 script、自定义规则集或仅 GUI 的「应用规则」里,却期待与顶栏 rules: 行为完全一致——不同客户端对「应用级」与「内核 rules」的注入顺序并不相同。必要时请回到 官方与站内文档,确认你所在客户端将进程规则送进了内核最终参与匹配的那一层

三、路径与大小写:只写 exe 还是全路径

仅文件名与完整路径的差异

在 Windows 上,很多示例只写 chrome.exegame.exe,这在「匹配逻辑按仅文件名比较」时够用;若你拷贝了带盘符、带空格的路径,却多写了引号或混用了正斜杠,或路径层级与真实安装位置不一致(例如微软商店版应用装在 WindowsApps 受保护目录),规则就会静默失败。建议做法:从任务管理器「打开文件所在位置」复制路径,先尝试与教程一致的短文件名形式,再尝试规范化后的全路径(注意反斜杠在 YAML 中是否需要转义)。

YAML 片段示意(请替换组名与路径)

# Example — adjust proxy group names and paths for your environment
rules:
  - PROCESS-NAME,AnyDesk.exe,PROXY_GROUP
  - PROCESS-NAME,"C:\Program Files\App\client.exe",PROXY_GROUP
  - GEOIP,CN,DIRECT
  - MATCH,DEFAULT_GROUP

部分版本对大小写敏感与否取决于实现;Windows 文件系统通常不区分大小写,但规则字符串若区分大小写,仍建议与磁盘上实际拼写保持一致,避免跨平台配置习惯带来的隐性差异。

四、权限与运行方式:管理员、服务与沙盒

PROCESS-NAME 需要内核或助手进程观察到「是谁发起了连接」。若 Clash 主体以普通用户运行,而目标程序以管理员权限提升运行,在部分系统上会出现进程信息不完整或无法关联的情况,表现为规则随机失效或始终不命中。反过来,若托盘里的 GUI 能拉起内核,但你用计划任务在 SYSTEM 账户下跑另一份核心,二者看到的进程命名空间也不一致。

建议排查顺序:将客户端与目标软件放在同一运行上下文下测试——例如都「以管理员身份运行」或都保持标准用户,并关闭一轮测试中的沙盒、容器化启动器。企业环境里若安全软件注入驱动拦截 API,也可能让进程名字段异常;这类问题超出应用层配置范畴,需要与安全策略协同处理。

注意:长期全局「管理员运行」会扩大攻击面;仅在验证是否为权限所致时短期使用,确认后再收回不必要的提升。

五、接管栈:TUN、系统代理与「看不见进程」

仅有系统代理(HTTP/SOCKS)时,许多 Win32 程序根本不读系统代理,而是直接出局;此时流量可能不会以你想象的方式进入 Clash,自然也就谈不上 PROCESS-NAME。相对地,TUN 模式从路由层接管,更可能让「不感知代理」的应用也进入内核——但 TUN 会触动路由表与防火墙,需按 专文 逐步验证。

若你「开了 TUN 仍不走进程规则」,接着要核对:WFP 驱动是否加载成功、是否有绕过列表把目标网段直接 DIRECT,以及客户端是否把本机回环或局域网排除在捕获之外——这些都会让日志里的最后一跳与 GUI 观感不一致。

六、规则顺序与策略组:别被 MATCH 截胡

Clash 系规则通常是自上而下第一个命中即停止。若靠前已有 GEOIP,CN,DIRECT、大段 DOMAIN-SUFFIX 或订阅自带的「全量直连 / 全量代理」兜底,你的 PROCESS-NAME 可能永远执行不到。解决思路只有两种:把进程规则移到更靠前,或放宽/收窄前序规则,使其不要抢走目标流量。

另一点是策略组引用是否有效:规则里写的第三个字段必须是已存在的 policy 名;若拼写与 proxy-groups 不一致,有的内核会回落到默认行为,看起来像「规则无效」。用连接日志确认每条记录最终落在哪个策略、对应哪条规则编号(若客户端展示),比反复改 YAML 更高效。

七、子进程、启动器与自动更新

游戏平台、IM 与创意软件常见的结构是:启动器 Launcher.exe 拉起主程序 App.exe,更新模块又是第三个进程。你只对启动器写了 PROCESS-NAME,实际联网却是主程序进程,自然不会命中。类似地,Electron 应用往往是 App.exe 外壳包一层 …\App\app-版本\… 深层路径,任务管理器默认折叠了完整路径,需要展开核对。

实操建议:在产生问题连接的瞬间,用任务管理器「详细信息」排序 CPU 或网络,锁定哪一个 PID 在对外 connect,把该 PID 对应映像写入规则;必要时用客户端自带的「按进程抓连接」视图交叉验证。

八、快查表与建议操作顺序

现象或疑问 优先核对
域名规则正常,进程规则永远 DIRECT 真实映像名 / 路径、子进程;规则是否排在更泛化规则之后;内核是否加载了含该条的配置
仅特定软件不命中 该软件是否读系统代理;是否需 TUN;是否有管理员权限落差
时而生效时而不生效 自动更新换了路径;多副本安装;UAC 提升与否;多个 Clash 实例
开了 TUN 仍异常 路由 / 防火墙;绕过列表;与《TUN 排障》对照

推荐操作顺序:确认最终配置已重载 → 用日志锁定进程映像 → 调整路径写法与规则序位 → 统一权限与运行方式 → 再决定系统代理 / TUN。保持一次只改一个变量,否则复盘困难。

九、小结

PROCESS-NAMEWindows 上极实用的进程级分流手段,但它不是「写了就一定生效」的魔法条——必须与真实进程路径、运行权限、规则顺序和流量接管模式对齐。相比只堆域名列表,它更适合那些主机名多变、或 P2P / 长尾连接密集的程序;但若跳过日志核对,很容易在路径或子进程上栽跟头。把本文与 SteamDiscord 等场景文一起读,可以在不重复的前提下补全 UDP、NAT 与游戏侧细节。

在需要长期维护一套可读规则与稳定内核的用户场景中,Clash 生态仍提供从 Mihomo 到多款 GUI 的一致路径。若你尚未安装或希望统一入口获取客户端与教程,可从本站开始部署,再按本文步骤逐项验证进程规则是否真正命中。

立即免费下载 Clash,开启流畅上网新体验