GoLand中需在File→Settings→Go→Go Environment→Environment里手动添加GOTMPDIR=C:\Users\YourName\GoBuilds(目录须预先创建),否则仍写入AppData\Local\Temp被杀软拦截。

GoLand 项目级设置 GOTMPDIR 的正确位置
GoLand 不会自动读取系统环境变量 GOTMPDIR,必须在项目配置中显式添加,否则 go run、go build 仍会往 AppData\Local\Temp 写中间文件,被杀软拦截后报 fork/exec: Access is denied。
设置路径是:File → Settings → Go → Go Environment → Environment 右侧的“…”按钮。在这里新增一行:GOTMPDIR=C:\Users\YourName\GoBuilds(路径需提前手动创建)。
注意:不是在系统环境变量里设,也不是在 Terminal 标签页里 $env:GOTMPDIR=... 临时赋值——那些对 GoLand 的构建流程无效。
为什么 GOTMPDIR 必须指向已存在的目录
GOTMPDIR 是 Go 工具链直接使用的路径,它不会帮你创建父目录或校验权限。如果目录不存在,go run -work 会静默失败,或者在 Windows 上抛出 open C:\xxx\go-buildxxx\...: The system cannot find the path specified 这类底层错误,而不是明确提示“目录不存在”。
- 必须用文件管理器或
mkdir C:\Users\YourName\GoBuilds先创建好该目录 - 避免设成
C:\Program Files\GoBuilds或C:\根目录——Windows UAC 可能拒绝写入 - 推荐路径如
C:\Users\YourName\go-build-tmp,用户目录下默认有完整权限
验证 GOTMPDIR 是否生效的可靠方式
别只看 IDE 是否“保存成功”,要实际触发一次构建并观察输出。最直接的方法是运行带 -work 参数的命令:
在 GoLand 的 Terminal 标签页中执行:go run -work main.go。第一行输出类似 WORK=C:\Users\YourName\go-build-tmp\go-build123456 才算真正生效。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
如果还是看到 WORK=C:\Users\YourName\AppData\Local\Temp\go-build...,说明:
- 项目环境变量没保存,或保存后没重启 GoLand
- Terminal 标签页未启用项目环境变量(Settings → Tools → Terminal → 勾选 Activate environment variables from project configuration)
- 路径中有空格或中文,某些旧版 Go(
多个 GoLand 项目共用同一 GOTMPDIR 的风险
可以共用,但要注意并发构建冲突。Go 默认会在 GOTMPDIR 下建随机命名的子目录(如 go-buildabc123),所以一般不会撞。但如果你在两个项目里同时执行 go test -race 这类高 IO 操作,且目标磁盘本身较慢或杀软实时扫描太激进,仍可能触发文件句柄争抢或“Access is denied”。
更稳妥的做法是为每个项目配独立子目录:
GOTMPDIR=C:\Users\YourName\go-build-tmp\project-aGOTMPDIR=C:\Users\YourName\go-build-tmp\project-b
这样既隔离了构建痕迹,也方便你在杀软里单独信任每个子目录,不用把整个 go-build-tmp 都加白名单。

















