Golang执行go run命令时出现Access Denied权限错误求助
解决Go编译时
Access denied权限错误 我之前在Windows环境下也碰到过类似的Go编译器权限问题,结合你的情况,这大概率是系统权限限制或者安全软件拦截导致的,下面是几个经过验证的解决方法:
1. 检查Go安装目录的权限
Go的编译工具compile.exe位于C:\Program Files\Go\pkg\tool\windows_amd64下,首先确认你的用户账号对这个目录有足够权限:
- 右键点击
C:\Program Files\Go文件夹,选择「属性」→「安全」标签 - 在组或用户列表中找到你的当前用户账号,确保拥有「读取和执行」「列出文件夹内容」「读取」权限
- 如果权限缺失,点击「编辑」按钮,添加你的用户账号并勾选对应的权限,最后点击「应用」保存
2. 以管理员身份运行终端
普通用户权限有时候无法完全访问系统目录下的可执行文件:
- 右键点击命令提示符(CMD)或PowerShell,选择「以管理员身份运行」
- 在管理员终端中切换到你的代码目录,再次执行
go run .测试
3. 排查安全软件的拦截
Windows Defender或者第三方杀毒软件很可能误判Go的编译工具为可疑程序:
- 暂时关闭实时保护(仅用于测试,测试完成后记得重新开启),然后尝试编译代码
- 如果关闭后恢复正常,把
C:\Program Files\Go\pkg\tool\windows_amd64目录添加到安全软件的信任/白名单中
4. 检查GOCACHE目录权限
从你的go env输出可以看到,Go的缓存目录是C:\Users\a\AppData\Local\go-build,这个目录的权限问题也可能导致编译失败:
- 右键点击该缓存目录,选择「属性」→「安全」标签
- 确保当前用户拥有「完全控制」或「读写」权限,若没有则添加对应权限
5. 重新安装Go到非系统目录
系统盘的Program Files目录有严格的权限管控,换个非系统盘目录安装Go可能解决问题:
- 卸载当前Go,重新安装到比如
D:\Go这样的非系统路径 - 更新系统环境变量中的
GOROOT为新的安装路径,重启终端后执行go env确认路径正确,再测试编译
验证步骤
你可以先尝试编译一个最简版的Hello World来排查问题:
package main import "fmt" func main() { fmt.Println("Hello World") }
执行go build命令生成可执行文件,然后直接运行该exe,如果能正常输出,说明编译工具本身没问题,问题可能出在go run的临时文件权限上,这时候重点检查GOCACHE目录的权限即可。
内容的提问来源于stack exchange,提问作者Matěj3301




