Jenkins调用Oracle VirtualBox报E_ACCESSDENIED权限错误如何解决?
错误原因
该E_ACCESSDENIED报错的核心原因是:Windows环境下Jenkins服务默认使用内置的Local System账户运行,而你创建的VirtualBox虚拟机配置、访问权限都绑定在你平时登录的普通用户账户下,Local System账户没有权限访问对应用户名下的VirtualBox资源,因此所有VBoxManage调用都会失败。
修复方案
方案1(最推荐):修改Jenkins服务的运行账户
直接将Jenkins服务的运行身份改为你能正常执行VBox命令的Windows用户即可,操作步骤:
- 按下
Win+R输入services.msc打开服务管理器 - 在服务列表中找到
Jenkins服务,右键点击选择「属性」 - 切换到「登录」选项卡,勾选「此账户」选项
- 输入你平时运行VirtualBox命令的Windows用户名、对应登录密码,点击确认保存
- 重启Jenkins服务,重新执行构建任务测试即可
- 按下
方案2:批处理内指定用户执行命令
如果你不想修改Jenkins服务的默认运行身份,可以在批处理脚本中用
runas命令指定用户执行VBoxManage操作,命令示例:runas /user:你的Windows用户名 /savecred "C:\Program Files\Oracle\VirtualBox\VBoxManage startvm \"Ubuntu\" --type headless"注意:第一次执行该命令时需要手动输入一次对应用户的密码,勾选保存凭证后后续Jenkins调用就不需要重复输入密码。
补充配置
如果上述操作后仍有报错,可补充配置权限:
- 找到VirtualBox安装目录,默认路径为
C:\Program Files\Oracle\VirtualBox,右键点击文件夹选择「属性」-「安全」 - 给Jenkins运行的账户添加文件夹的「完全控制」权限
- 确认你已经安装了对应版本的Oracle VM VirtualBox Extension Pack,headless模式运行需要该扩展包支持
- 找到VirtualBox安装目录,默认路径为
注意事项
- 不要混用不同用户身份运行VirtualBox/VBoxManage,否则会导致虚拟机配置写入不同用户的家目录,出现配置找不到的问题
- 修改Jenkins服务运行账户不会丢失原有Jenkins的工作空间、插件、任务配置,无需重新初始化Jenkins
内容的提问来源于stack exchange,提问作者AdishRao
相关产品推荐
相关产品推荐

