goland在windows运行项目提示“access is denied”通常是因windows对刚编译的exe添加了“mark of the web”锁定标记,导致createprocess调用被拦截;双击可运行是因smartscreen提示后手动解除了标记;解决方法包括右键属性勾选“解除锁定”、powershell执行unblock-file命令,或改用go run避免生成exe。

GoLand 在 Windows 上运行项目提示权限不足,绝大多数情况不是 Go 代码或逻辑问题,而是 Windows 对可执行文件(尤其是刚编译出的 go_build_*.exe)实施了默认安全策略 —— 即 SmartScreen 过滤 + 文件锁定(Mark of the Web),导致 GoLand 启动时被系统拦截。
为什么双击能运行但 GoLand 启动就报错?
Windows 对通过浏览器下载、远程复制、或某些构建工具生成的 EXE 文件自动添加“Zone.Identifier”标记(即“已阻止此文件来自互联网”)。GoLand 调用该 EXE 时走的是 CreateProcess API,触发更严格的权限校验;而你手动双击会弹出 SmartScreen 提示,点“仍要运行”后标记被清除,所以能跑通。
- 典型错误信息:
Cannot run program "D:\atool\goexe\myApp.exe": CreateProcess error=5, Access is denied - 该错误和 GoLand 是否以管理员身份运行无关 —— 即使右键“以管理员身份运行”,只要文件带锁定标记,依然失败
- 错误不发生在 Go 编译阶段,而是在 GoLand 尝试 启动已生成的二进制 时触发
直接解锁定:右键属性 → 勾选“解除锁定”
这是最快见效的操作,适用于单个 EXE 或整个输出目录:
- 在 Windows 资源管理器中找到
go_build_*.exe或你的myApp.exe - 右键 → “属性” → 滚动到底部,在“常规”选项卡看到“安全”区域下方有灰色文字:“此文件来自其他计算机,可能被阻止以帮助保护该计算机。”,其下方有复选框:✓ 解除锁定
- 勾选它 → 点击“应用” → “确定”
- 如果看不到该选项,说明文件未被标记(比如是本地
go build直接生成的),那问题不在这里,跳到下一节
批量解除锁定(适合 CI 构建或频繁重编译场景)
每次手动点太慢?用 PowerShell 一行命令清空当前目录下所有 EXE 的锁定标记:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
Get-ChildItem -Path . -Filter "*.exe" -Recurse | Unblock-File
注意:Unblock-File 是 Windows PowerShell 3.0+ 内置命令,无需额外安装。把它加到你的构建脚本末尾即可:
- 例如,在 GoLand 的 Run Configuration → Before launch 中添加 “Run External Tool”,命令填
powershell,参数填-Command "Get-ChildItem -Path '%ProjectFileDir%' -Filter '*.exe' -Recurse | Unblock-File" - 这样每次点击 ▶ 运行前,自动清理输出目录 EXE 的锁定状态
- ⚠️ 不要对整个
%GOPATH%或系统目录运行,仅限项目输出路径
彻底规避:让 GoLand 不依赖本地 EXE,改用 go run
如果你不需要调试编译后的二进制(比如只是快速验证逻辑),最稳的方式是绕过 EXE 启动流程,直接调用 go run:
- 打开 Run → Edit Configurations → 选中你的配置 → 取消勾选 “Run binary after build”
- 在 “Program arguments” 上方,把 “Kind” 改为
File,然后在 “File path” 里填main.go(或你入口文件) - GoLand 会自动调用
go run main.go,完全不生成或执行 EXE,自然避开所有文件锁定问题 - 缺点:无法调试编译期行为(如 cgo、链接标志)、启动略慢;优点:100% 免权限干预,适合演示、CI 测试、教学环境
真正容易被忽略的是:这个“权限不足”根本不是 GoLand 或 Go 的权限设置问题,而是 Windows 文件系统层面对“来源不可信二进制”的主动拦截。很多人花几小时查 GoLand 日志、重装 SDK、甚至开管理员模式,其实只需要右键点一下“解除锁定”。










