热爱技术,追求卓越
不断求索,精益求精

Windows 11 拦住了我还没签名的客户端:Smart App Control 完全排查手册

我做的客户端,被自己电脑拦了

上周把桌面客户端打包出来,双击,弹窗:

智能应用控制已阻止可能不安全的应用。

而且——没有「仍要运行」这个按钮。

我第一反应是「那就是 SmartScreen 呗,点『更多信息』绕过」。找了一圈没找到绕过选项,才意识到拦住我的根本不是 SmartScreen,是 Windows 11 里另一个更狠的东西:智能应用控制(Smart App Control,SAC)。

这篇把整件事讲清楚:它为什么拦我、怎么确认是不是它、三种关闭方法、一个不注意就会踩的坑(关闭可能是不可逆的),以及为什么折腾半天,最终答案其实是「去给应用做代码签名」。

先说结论:为什么它拦我

我的客户端(YouAgent 桌面版)和它启动的后端进程,都没有做代码签名。

而 SAC 的规则就一句话:只放行「已签名且有信誉」或微软判定安全的程序,其余一律阻止。

它不像普通杀软弹个框让你选,它连选择都不给你。

SAC 和 SmartScreen,别搞混

这是最容易混的地方,我一开始也踩了这个坑:

SmartScreen 智能应用控制(SAC)
拦什么 下载/运行时的「未知发布者」 未签名 / 无信誉的程序
能不能单次放行 能(更多信息 → 仍要运行) 不能,没有任何绕过选项
怎么关 一般不用关 得去 Windows 安全中心整体关掉

记住一个判断法:弹窗里出现「智能应用控制已阻止」这几个字的,就是 SAC。 没有「仍要运行」可点,不是你眼瞎。

为什么拦的是两个 exe?Electron 的老问题

有个细节挺多人困惑:弹窗里会冒出 youagent-backend.exe,看着像个陌生程序。

因为 Electron 应用不是”一个 exe”:外壳 YouAgent.exe 会另外拉起一个后端进程 youagent-backend.exe。而 Windows 的安全机制是按「每个 exe」单独判定的 —— 所以后端会单独再被拦一次。

只放行外壳,不够。 两个都是未签名,两个都拦。

先确认:你的机器到底有没有 SAC

SAC 不是每台机器都有。它只在这几种情况下默认启用:

  • Windows 11,版本 22H2 或更高;
  • 而且是全新安装(clean install)的 Windows 11;
  • 不是企业托管、也不是 S 模式。

如果你的系统是下面这些情况,大概率压根没有 SAC:

  • 从 Windows 10 升级上来的;
  • 从更早的 Windows 11 升级上来的;
  • Windows 10(完全没有这个功能)。

最快的判断方法:打开 Windows 安全中心,如果里面根本看不到「智能应用控制」这一项,说明你这台机器不拦你,后面都不用看了。

用命令确认状态

想确认得更准确一点,PowerShell 跑一行:

(Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\CI\Policy').VerifiedAndReputablePolicyState

返回值含义:

值 状态
0 关闭(Off)
1 开启(On,正在强制拦截)
2 评估模式(Evaluation)

也可以用 citool.exe -lp(管理员命令提示符),看 VerifiedAndReputableDesktop 是不是 Currently Enforced: True。

⚠️ 关闭之前,先看这一段:可能是不可逆的

这是整篇最需要停下来看一眼的地方。

关闭 SAC 在旧版本上是「永久」操作:点了关闭,就再也开不回来了,除非重置或重装系统。

是否可逆,取决于你的系统更新级别:

  • 2026 年那批累积更新之前(KB5079391 → KB5086672,或 KB5083769):
    关闭是永久的,无法再开启,只能重置/重装系统。
  • 这些更新之后:
    关闭后可以在同一个界面重新选回「开启 / 评估」,不用重装。前提是 Windows 安全中心应用版本 ≥ v1000.29554。

查看版本:Windows 安全中心 → 右上角设置(齿轮)→ 关于。

如果版本低于 v1000.29554,关掉就是回不去了 —— 动手前三思。

方法一:图形界面关闭(大多数人用这个)

  1. 开始菜单搜「Windows 安全中心」打开(或点任务栏右下角盾牌图标);
  2. 左侧选 应用和浏览器控制;
  3. 点 智能应用控制设置;
  4. 在 开启 / 评估 / 关闭 里,选 关闭;
  5. 确认(可能会弹 UAC 管理员确认);
  6. 关掉后,双击应用就能跑了。

等价路径:设置 → 隐私和安全性 → Windows 安全中心 → 应用和浏览器控制 → 智能应用控制 → 关闭。

方法二:注册表 / .reg 文件(适合批量)

要给多台机器部署、或者想脚本化,就用注册表。

新建一个 DisableSAC.reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Policy]
"VerifiedAndReputablePolicyState"=dword:00000000

(0 关,1 开,2 评估。)

需要管理员权限。 应用方式二选一:

  • 双击这个 .reg 文件 → 确认合并;
  • 管理员命令提示符里:reg import C:\PathTo\DisableSAC.reg。

让它立刻生效(二选一):

citool.exe -r

或者直接重启。

验证:再跑一次 citool.exe -lp。

可选加固:如果怕 Defender 重启后又给你改回去,可以改 HKLM\SOFTWARE\Microsoft\Windows Defender 下的 SacLearningModeSwitch(DWORD)= 0。

注意:这一项在 software 配置单元里,别和上面的 system 单元搞混。

方法三:WinRE 离线修改(安全中心都进不去时)

这是最激进的一招,只在图形界面完全进不去、方法一二都不好使时用。

进 Windows 恢复环境(WinRE) 的命令提示符,离线改注册表:

reg load HKLMsac <系统盘>:\Windows\System32\config\SYSTEM
reg add HKLMsac\ControlSet001\Control\CI\Policy /v VerifiedAndReputablePolicyState /t REG_DWORD /d 0 /f
reg add HKLMsac\ControlSet001\Control\CI\Protected /v VerifiedAndReputablePolicyStateMinValueSeen /t REG_DWORD /d 0 /f
reg unload HKLMsac

reg load HKLMsac2 <系统盘>:\Windows\System32\config\SOFTWARE
reg add "HKLMsac2\Microsoft\Windows Defender" /v SacLearningModeSwitch /t REG_DWORD /d 0 /f
reg unload HKLMsac2

先确认系统盘符,并且先把系统盘的 BitLocker 挂起,否则改不动。

改完重启。

真正的答案:去做代码签名

上面三种方法都只是「让这一台放行」。

问题在于——你每一个用户,都得各自去关一次 SAC。 一个普通用户,看到「已阻止可能不安全的应用」,大概率直接就卸载了,根本不会去翻 Windows 安全中心。

所以对外分发,正确的做法是代码签名:

  • SAC 和 SmartScreen 对已签名的应用友好得多;
  • 持续用同一个签名身份发布,可以逐渐积累信誉,拦截提示会慢慢消失。

但签名这件事,有几个 2024 年之后的现实,得有心理预期:

  • EV 和 OV 证书,都不再「秒过」SmartScreen,都要靠攒信誉;
  • 证书私钥必须放在硬件里(USB Token 或云 HSM);
  • 证书有效期封顶约 460 天,到期得换。

我的项目本身已经把签名流程准备好了(desktop/electron-builder.win.js),支持对接云 HSM 签名服务,配好这几个环境变量重新打包就行:

SIGNTOOL_PATH
SIGNTOOL_ACCESS_KEY
SIGNTOOL_ACCESS_SECRET
SIGNTOOL_CERT_CODE

(时间戳默认用微软的。)

几个高频问题

Q:能不能只放行我这一个应用,SAC 继续保护其他程序?
A:不能。 SAC 没有单应用例外,只能整体开或关。

Q:关完要重启吗?
A: 图形界面关一般立即生效;用 .reg 方式建议跑 citool.exe -r 或直接重启。

Q:关掉 SAC 有什么风险?
A: 会降低这台机器对未知恶意程序的防护——SAC 本来会拦下那些未签名的可疑程序。只建议在你自己知情、自己拥有的机器上操作。

速查表

目标 操作
关闭(图形) Windows 安全中心 → 应用和浏览器控制 → 智能应用控制 → 关闭
查看状态 citool.exe -lp,或读注册表 VerifiedAndReputablePolicyState
立即生效 citool.exe -r 或重启
关闭后能否再开 2026 更新后可逆;此前需重装系统

说到底,SAC 拦不拦你,其实是在问一个问题:你的应用,有没有一个让系统「信得过」的身份。

小范围自用,关掉它就行;想认真对外分发,代码签名这道坎,早晚都要过。

赞(0)
未经允许不得转载:LoveCTO-技术天天练,程序员的 AI 实战笔记 » Windows 11 拦住了我还没签名的客户端:Smart App Control 完全排查手册

热爱技术 追求卓越 精益求精

登录

找回密码

注册