windows上运行程序,提示 应用程序控制策略已阻止此文件,如何去除阻止

📅 2026/7/2 15:17:53 👁️ 阅读次数 📝 编程学习
windows上运行程序,提示 应用程序控制策略已阻止此文件,如何去除阻止

Windows 提示“应用程序控制策略已阻止此文件”,通常不是普通杀毒拦截,而是系统策略类拦截。常见来源有:

  1. Windows Defender 应用程序控制 WDAC

  2. AppLocker

  3. Smart App Control 智能应用控制

  4. 组策略 / 企业安全策略

  5. 文件来自网络,被 Windows 标记为不受信任

  6. 杀毒/EDR/企业管控软件拦截

可以按下面顺序排查。


一、先解除文件“来自网络”的阻止

右键这个 exe 文件 →属性→ 看底部是否有:

此文件来自其他计算机,可能被阻止以帮助保护该计算机

勾选或点击:

解除锁定 / Unblock

然后点应用 / 确定,再运行。

也可以用 PowerShell:

Unblock-File -Path "C:\路径\你的程序.exe"

如果是整个目录:

Get-ChildItem "C:\你的目录" -Recurse | Unblock-File

二、如果是“智能应用控制”阻止

Windows 11 可能会提示类似:

智能应用控制已阻止可能不安全的应用
无法验证其发布者

处理方法:

打开:

Windows 安全中心 → 应用和浏览器控制 → 智能应用控制设置

如果当前是开启,可以改为关闭

注意:
智能应用控制一旦关闭,通常不能直接重新开启,除非重装或重置 Windows,所以建议先确认是不是测试机。

更推荐的做法是:
给程序做代码签名,或者把程序放到可信发布流程中。


三、检查 AppLocker 策略

如果是企业环境、域控环境,可能是 AppLocker 拦截。

查看本机策略:

Win + R输入:

secpol.msc

然后查看:

应用程序控制策略 → AppLocker

重点看:

可执行规则 Windows Installer 规则 脚本规则 打包应用规则

如果里面有拒绝规则,需要删除或新增允许规则。

也可以用 PowerShell 查看:

Get-AppLockerPolicy -Local | Select-Object -ExpandProperty RuleCollections

查看生效策略:

Get-AppLockerPolicy -Effective -Xml

如果是域策略下发,本机改了也可能没用,需要在域控 GPO 里改。


四、检查 WDAC 策略

WDAC 拦截时,常见提示也是“应用程序控制策略已阻止此文件”。

查看是否存在 WDAC 策略文件:

dir C:\Windows\System32\CodeIntegrity

重点看是否有:

SIPolicy.p7b CiPolicies\Active\*.cip

也可以查看事件日志:

事件查看器 → 应用程序和服务日志 → Microsoft → Windows → CodeIntegrity → Operational

如果看到被拦截的 exe 路径,说明是 WDAC。

临时排查可以查看:

Get-CimInstance -Namespace root\Microsoft\Windows\CI -ClassName MSFT_CIPolicy

如果是 WDAC,需要删除或替换策略,常见路径:

C:\Windows\System32\CodeIntegrity\SIPolicy.p7b C:\Windows\System32\CodeIntegrity\CiPolicies\Active\

但不建议直接删除,尤其是公司设备,可能导致安全策略异常或开机策略问题。


五、检查组策略里的软件限制策略

Win + R输入:

gpedit.msc

查看:

计算机配置 → Windows 设置 → 安全设置 → 软件限制策略

如果有路径规则、哈希规则、证书规则阻止你的程序,需要修改为允许。

也可以查看:

用户配置 → Windows 设置 → 安全设置 → 软件限制策略

六、如果是企业安全软件拦截

比如火绒、亚信、ESET、360、深信服、奇安信、Defender for Endpoint 等,也可能把提示包装成策略拦截。

可以先测试:

  1. 换一个目录运行,例如:

C:\Tools\你的程序.exe
  1. 右键管理员运行

  2. 暂时退出安全软件测试

  3. 查看安全软件日志

  4. 加入白名单

  5. 对 exe 做数字签名


七、开发调试场景推荐做法

如果这是你自己编译的程序,建议:

1. 不要直接从下载目录运行

把程序放到:

C:\Tools\ C:\Program Files\YourApp\

2. 删除 Zone.Identifier 标记

Get-Item "C:\路径\你的程序.exe" -Stream * Remove-Item "C:\路径\你的程序.exe" -Stream Zone.Identifier

3. 给程序签名

如果经常被拦,最好使用代码签名证书。

签名示例:

signtool sign /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 /a "你的程序.exe"

4. 检查是否缺少发布者信息

右键 exe → 属性 → 数字签名。
如果没有签名,在 Windows 11、企业环境、Smart App Control 下更容易被阻止。


八、快速判断是哪种策略拦截

可以先看事件日志:

AppLocker 日志

事件查看器 → 应用程序和服务日志 → Microsoft → Windows → AppLocker

重点看:

EXE and DLL MSI and Script Packaged app-Execution

WDAC / Code Integrity 日志

事件查看器 → 应用程序和服务日志 → Microsoft → Windows → CodeIntegrity → Operational

Defender 日志

事件查看器 → 应用程序和服务日志 → Microsoft → Windows → Windows Defender → Operational

推荐你先执行这几个命令

管理员 PowerShell 运行:

Unblock-File -Path "C:\路径\你的程序.exe"

然后查是否有 AppLocker:

Get-AppLockerPolicy -Effective -Xml

再查 WDAC:

dir C:\Windows\System32\CodeIntegrity dir C:\Windows\System32\CodeIntegrity\CiPolicies\Active

最后看事件日志:

CodeIntegrity / Operational AppLocker / EXE and DLL

如果你只是个人电脑,优先处理顺序是:

解除锁定文件 → 关闭智能应用控制 → Windows 安全中心添加排除项 → 检查本地组策略/AppLocker → 检查 WDAC

如果是公司电脑或客户环境,优先处理顺序是:

查事件日志 → 判断 AppLocker 还是 WDAC → 由管理员在 GPO/MDM/安全平台中加白 → 程序签名

最常见有效方法是:右键属性解除锁定 + 关闭智能应用控制 + 给程序签名或加白名单