You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动