windows上运行程序,提示 应用程序控制策略已阻止此文件,如何去除阻止
Windows 提示“应用程序控制策略已阻止此文件”,通常不是普通杀毒拦截,而是系统策略类拦截。常见来源有:
Windows Defender 应用程序控制 WDAC
AppLocker
Smart App Control 智能应用控制
组策略 / 企业安全策略
文件来自网络,被 Windows 标记为不受信任
杀毒/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 等,也可能把提示包装成策略拦截。
可以先测试:
换一个目录运行,例如:
C:\Tools\你的程序.exe右键管理员运行
暂时退出安全软件测试
查看安全软件日志
加入白名单
对 exe 做数字签名
七、开发调试场景推荐做法
如果这是你自己编译的程序,建议:
1. 不要直接从下载目录运行
把程序放到:
C:\Tools\ C:\Program Files\YourApp\2. 删除 Zone.Identifier 标记
Get-Item "C:\路径\你的程序.exe" -Stream * Remove-Item "C:\路径\你的程序.exe" -Stream Zone.Identifier3. 给程序签名
如果经常被拦,最好使用代码签名证书。
签名示例:
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-ExecutionWDAC / Code Integrity 日志
事件查看器 → 应用程序和服务日志 → Microsoft → Windows → CodeIntegrity → OperationalDefender 日志
事件查看器 → 应用程序和服务日志 → 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/安全平台中加白 → 程序签名最常见有效方法是:右键属性解除锁定 + 关闭智能应用控制 + 给程序签名或加白名单。