SmartScreen 与「未知发布者」:到底拦了什么
声誉与网络标记如何决定文件能否运行、为什么自己编译的程序也被拦,以及点「仍要运行」之前该做什么。
测试环境Pro (26H2) / Server · 版本号 26300.9457 / 26100.33650 · x64
E1- 版本号
- 26300.9457 / 26100.33650
- 版本
- Pro (26H2) / Server
- 架构
- x64
- 支持
- 文档(E1)
- 证据
- E1官方文档
- 核验日期
- 2026-10-29
- 页面类型
- 概念
产生吓人提示的是两套不同机制:
- 网络标记(MotW)——Windows 给从互联网下载的文件打的标记,意思是“来自外部”,不是“这是恶意软件”。
- 声誉——SmartScreen 向微软查询该文件/哈希/发布者是否已知良好或已知恶意。
“未知发布者”几乎总意味着二进制没有代码签名,而不是它有恶意。“Windows 已保护你的电脑”意味着声誉查询无结论或负面。
各提示的触发条件
Section titled “各提示的触发条件”| 提示 | 原因 |
|---|---|
| “未知发布者” | 没有 Authenticode 签名 |
| “Windows 已保护你的电脑” | 有 MotW + 声誉不足 |
| “此应用无法在你的电脑上运行” | 架构不匹配(ARM64 vs x64) |
| “已被管理员阻止” | 策略(AppLocker/WDAC/SmartScreen 策略) |
Get-Item .\setup.exe -Stream * | Select-Object Stream,LengthGet-AuthenticodeSignature .\setup.exe | Select-Object Status,SignerCertificateStatus : NotSigned 解释了发布者提示。Status : Valid 但签名者不认识,是另一个问题——是谁签的?
为什么自己编译的也被拦
Section titled “为什么自己编译的也被拦”是你编译的,理应可信——除非:
- 它没有签名(多数调试构建如此);
- 它从别的机器下载或复制过来,带着 MotW;
- SmartScreen 从没见过这个哈希。
按正确性排序的选项:
- 给二进制签名(自用自签,分发用代码签名证书)。
- 清除自己产出的文件的 MotW:
Unblock-File .\app.exe。 - 点 更多信息 → 仍要运行——对自己刚构建的一次性文件可以接受。
SmartScreen 不是什么
Section titled “SmartScreen 不是什么”- 不是杀毒:它不像 Defender 那样扫描文件内容。
- 不是保证:被入侵的发布者签出的二进制照样通过。
- 不是全流量过滤——那是 Defender 的 Web 防护。
它挡住你确实需要的东西时
Section titled “它挡住你确实需要的东西时”| 情况 | 正确做法 |
|---|---|
| 厂商工具、未签名 | 核对下载来源与厂商页面上的哈希,再解除阻止 |
| 内部工具 | 签名,或用策略允许 |
| 老安装包 | 优先换新版本;老的未签名安装包是真实风险 |
| 同事发来的脚本 | 先读再解除 |
Unblock-File .\tool.exeGet-Item .\tool.exe -Stream * | Select-Object Stream声誉部分无法按文件配置
Section titled “声誉部分无法按文件配置”没有受支持的方式在本地“白名单”某个哈希——声誉是云服务。你能做的是:
- 给二进制签名;
- 用 AppLocker/WDAC 按发布者允许,从而跳过受信发布者的声誉提示;
- 单机场景下接受提示继续。
E1。SmartScreen 与 MotW 行为有微软文档依据。实验室虚拟机不访问不可信下载,因此未复现提示。