一、问题背景
在 Windows 中运行 exe 程序时,经常会遇到如下提示:
Microsoft Defender SmartScreen 阻止了无法识别的应用启动
常见的解决方法是:
👉 右键 exe → 属性 → 勾选【解除锁定】→ 确定
但是有时候你会发现:
❗某些程序根本没有“解除锁定”这个选项
那这是为什么?是不是系统问题?
二、“解除锁定”按钮的本质
其实这个按钮并不是所有文件都有,它依赖一个关键机制:
👉Mark of the Web(MOTW,网络来源标记)
当文件来源于互联网时(例如浏览器下载),Windows 会给文件附加一个隐藏标记: Zone.Identifier
系统检测到这个标记后,就会:
- 提示 SmartScreen 警告
- 在属性中显示【解除锁定】
三、为什么有的文件没有“解除锁定”?
以下几种情况都会导致按钮消失👇
1. 文件不是从互联网下载的(最常见)
比如:
- 自己开发编译的 exe
- 本地生成的程序
- Git clone 下来的项目
- 内网拷贝的文件
👉 这些文件默认没有 MOTW 标记
➡️ 所以不会出现“解除锁定”
2. 标记被清除了
例如:
- 使用压缩软件(WinRAR / 7-Zip)解压
- 文件复制到 U 盘
- 通过某些工具处理过
👉 标记丢失 → 按钮消失
3. 文件所在磁盘不支持
比如:
- FAT32
- exFAT
👉 这些文件系统不支持 NTFS 的附加数据流(ADS)
四、为什么没有“解除锁定”还是被拦?
这里是很多人困惑的重点👇
👉SmartScreen 不只看“是否来自互联网”
它还会判断:
- 是否有数字签名
- 发布者是否可信
- 文件是否常见(信誉系统)
- 是否是新程序
关键结论:你自己开发的 exe 被拦截,最核心原因是:没有数字签名
五、解决方案
方法1:直接运行(最简单)
点击:
👉【更多信息】→【仍要运行】
方法2:使用 PowerShell 解除限制
即使没有“解除锁定”按钮,也可以执行:
Unblock-File -Path "你的exe路径"
✅ 方法3:给程序添加数字签名(推荐)
如果你是开发者,建议:给 exe 添加代码签名
例如使用:
- DigiCert
- Sectigo
签名命令:
signtool sign /a your.exe
优点:
- 不再被 SmartScreen 拦截
- 提升用户信任
- 更适合发布正式软件
方法4:关闭 SmartScreen(不推荐)
路径:
👉 Windows 安全中心 → 应用和浏览器控制 → 关闭 SmartScreen
六、总结
| 现象 | 原因 |
|---|---|
| 有“解除锁定” | 文件来自互联网(带 MOTW) |
| 没有“解除锁定” | 本地生成或标记丢失 |
| 被 SmartScreen 拦截 | 没有数字签名 / 信誉低 |
一句话总结:
“解除锁定”只是针对“来源标记”,而 SmartScreen 拦截的核心原因是“信任问题”。
七、适用场景
- 自己开发 exe 无法运行
- 用户反馈程序被拦截
- 发布工具/软件遇到信任问题
- 内网程序运行异常
如果这篇文章对你有帮助,欢迎点赞 👍 收藏 ⭐