GoLand报“拒绝访问”是因Windows将生成的.exe标记为“来自互联网”,触发Zone.Identifier锁定;双击可交互解禁,而GoLand调用CreateProcess API无法弹窗,故静默失败;解决方法:右键.exe属性→勾选“解除锁定”,或改用Ctrl+Alt+F5附加进程调试。

GoLand 运行代码时控制台报“拒绝访问”,基本不是 GoLand 自身权限问题,而是它生成或尝试执行的可执行文件被 Windows 系统策略拦截——最常见的是文件被标记为“来自互联网”,触发了 NTFS 的 Zone.Identifier 附加属性。
为什么双击能运行,GoLand 却报“拒绝访问”
Windows 对从网络下载(包括 go build 生成的 .exe)自动添加“锁定”标记。系统允许用户双击运行(弹窗提示后放行),但 IDE 启动进程时走的是 CreateProcess API 调用,不触发交互式解禁流程,直接返回 Access is denied。
- 现象:GoLand 控制台输出类似
Cannot run program "D:\myproj\main.exe": CreateProcess error=5, Access is denied - 验证方式:在资源管理器中右键该 .exe → “属性”,底部若显示“此文件来自其他计算机,可能被阻止以帮助保护该计算机”,就坐实了
- 注意:这不是 GoLand 没以管理员身份运行导致的——即使以管理员启动,该标记仍会阻断静默执行
手动解除文件锁定(最快见效)
这是最直接、无需改配置、不依赖重启的解决方式:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 在 Windows 资源管理器中找到 GoLand 构建出的 .exe 文件(默认在项目根目录或
out/目录下,路径可在 GoLand 的Run → Edit Configurations → Output directory查看) - 右键 → “属性” → 底部勾选 ✅ 解除锁定 → “应用” → “确定”
- 回到 GoLand,重新运行(无需重启 IDE 或清理缓存)
- 如果“解除锁定”选项不可见,说明文件不在 NTFS 卷上(如 WSL2 的 /mnt/c/ 路径),此时需换用方案 2
让 GoLand 自动绕过锁定检查(一劳永逸)
本质是让 GoLand 不直接执行 .exe,而是通过调试器 dlv attach 到已运行进程,跳过 CreateProcess 权限校验环节:
- 终端中先构建并手动启动程序:
go build -o myapp.exe main.go && start myapp.exe - 在 GoLand 中按
Ctrl + Alt + F5(Attach to Process)→ 在弹窗里选中myapp.exe进程 - 此时断点、变量查看、调用栈全部可用,且完全规避“拒绝访问”
- 适用场景:调试阶段;生产部署前仍需确保最终 .exe 已解除锁定
额外注意:GOBIN 和 umask 不影响此错误
这个“拒绝访问”和 Go 环境变量(如 GOBIN)、文件权限位(umask)、SELinux 等完全无关。它是 Windows 特有的文件来源策略(Mark of the Web),只作用于带 Zone.Identifier 替代数据流的文件。即便你用 os.Chmod 把权限设成 0777,只要标记还在,GoLand 就无法启动它。

















