当前位置: 代码网 > it编程>数据库>Access > WSL2 启动报错“拒绝访问“ E_ACCESSDENIED 完整解决方案

WSL2 启动报错“拒绝访问“ E_ACCESSDENIED 完整解决方案

2026年03月23日 Access 我要评论
前言将 wsl 迁移到非系统盘(如 d 盘)后,再次启动时可能遇到 “拒绝访问” 错误,本文记录完整排查与修复过程。一、问题现象打开 powershell,输入 wsl 启动,

前言

将 wsl 迁移到非系统盘(如 d 盘)后,再次启动时可能遇到 “拒绝访问” 错误,本文记录完整排查与修复过程。

一、问题现象

打开 powershell,输入 wsl 启动,报错如下:

ps d:\file\军哥聊技术> wsl
无法将磁盘"\\?\d:\software\wsl\ext4.vhdx"附加到 wsl2: 拒绝访问。
错误代码: wsl/service/createinstance/mountdisk/hcs/e_accessdenied

根本原因:当前 windows 用户对 wsl2 虚拟磁盘文件 ext4.vhdx 没有完全控制权限,导致 wsl 无法挂载磁盘。

二、解决步骤

2.1 关闭 wsl

先确保 wsl 完全关闭:

wsl --shutdown

2.2 查看当前文件权限

icacls "d:\software\wsl\ext4.vhdx"

输出如下:

d:\software\wsl\ext4.vhdx builtin\administrators:(i)(f)
                          nt authority\system:(i)(f)
                          nt authority\authenticated users:(i)(m)
                          builtin\users:(i)(rx)

可以看到:

  • administratorssystem 有完全控制权限 (f)
  • 普通用户只有读取和执行权限 (rx)缺少写入权限

2.3 查看当前用户名

$env:username

记住输出的用户名(例如 23670),下一步要用。

2.4 以管理员身份修复权限

普通终端没有权限修改该文件的 acl,直接运行 icacls /grant 会报"拒绝访问":

# ❌ 普通权限下会失败
icacls "d:\software\wsl\ext4.vhdx" /grant "23670:(f)"
# 输出:d:\software\wsl\ext4.vhdx: 拒绝访问。

正确做法——通过 start-process -verb runas 提权执行,运行后会弹出 uac 管理员确认窗口,点击 “是”

start-process powershell -verb runas -argumentlist "-command", "icacls 'd:\software\wsl\ext4.vhdx' /grant '你的用户名:(f)'; icacls 'd:\software\wsl' /grant '你的用户名:(oi)(ci)(f)'; pause"

⚠️ 注意:将 你的用户名 替换为上一步获取的实际用户名。

例如用户名为 23670,完整命令为:

start-process powershell -verb runas -argumentlist "-command", "icacls 'd:\software\wsl\ext4.vhdx' /grant '23670:(f)'; icacls 'd:\software\wsl' /grant '23670:(oi)(ci)(f)'; pause"

参数说明

参数含义
(f)full control,完全控制权限
(oi)object inherit,子文件继承此权限
(ci)container inherit,子文件夹继承此权限

等弹出的管理员窗口显示 “请按任意键继续” 后,说明权限修复成功。

2.5 重新启动 wsl

wsl

正常输出:

to run a command as administrator (user "root"), use "sudo <command>".
see "man sudo_root" for details.
(base) wyj@wyj:/mnt/d/file/军哥聊技术$

wsl 启动成功!

三、常见原因总结

原因说明
wsl 迁移到非系统盘从 c 盘迁移到 d 盘后,新位置的文件权限未正确继承
windows 更新系统更新后可能重置部分文件夹权限
手动移动 vhdx 文件复制/移动虚拟磁盘文件时权限丢失
多用户环境其他管理员创建的 wsl 实例,当前用户无权限

四、补充:关于 localhost 代理警告

启动时可能看到以下警告:

wsl: 检测到 localhost 代理配置,但未镜像到 wsl。nat 模式下的 wsl 不支持 localhost 代理。

这条警告 不影响 wsl 正常使用,可以忽略。如需消除,在 %userprofile%\.wslconfig 中添加:

[wsl2]
networkingmode=mirrored

保存后执行:

wsl --shutdown
wsl

重启即可消除警告。

总结

步骤命令
关闭 wslwsl --shutdown
查看权限icacls "d:\software\wsl\ext4.vhdx"
查看用户名$env:username
提权修复权限start-process powershell -verb runas ...
重启 wslwsl

核心思路:用管理员权限给当前用户授予 vhdx 文件的完全控制权限,一行命令即可解决。

ps d:\file\军哥聊技术> wsl --shutdown; icacls "d:\software\wsl\ext4.vhdx" 2>$null
d:\software\wsl\ext4.vhdx builtin\administrators:(i)(f)
                          nt authority\system:(i)(f)
                          nt authority\authenticated users:(i)(m)
                          builtin\users:(i)(rx)
已成功处理 1 个文件; 处理 0 个文件时失败
ps d:\file\军哥聊技术> $env:username
ps d:\file\军哥聊技术> wsl --shutdown; icacls "d:\software\wsl\ext4.vhdx" 2>$null
d:\software\wsl\ext4.vhdx builtin\administrators:(i)(f)
                          nt authority\system:(i)(f)
                          nt authority\authenticated users:(i)(m)
                          builtin\users:(i)(rx)
已成功处理 1 个文件; 处理 0 个文件时失败
ps d:\file\军哥聊技术> wsl --shutdown; icacls "d:\software\wsl\ext4.vhdx" 2>$null
d:\software\wsl\ext4.vhdx builtin\administrators:(i)(f)
                          nt authority\system:(i)(f)
                          nt authority\authenticated users:(i)(m)
                          builtin\users:(i)(rx)
ps d:\file\军哥聊技术> wsl --shutdown; icacls "d:\software\wsl\ext4.vhdx" 2>$null
d:\software\wsl\ext4.vhdx builtin\administrators:(i)(f)
                          nt authority\system:(i)(f)
ps d:\file\军哥聊技术> wsl --shutdown; icacls "d:\software\wsl\ext4.vhdx" 2>$null
d:\software\wsl\ext4.vhdx builtin\administrators:(i)(f)
                          nt authority\system:(i)(f)
ps d:\file\军哥聊技术> wsl --shutdown; icacls "d:\software\wsl\ext4.vhdx" 2>$null
d:\software\wsl\ext4.vhdx builtin\administrators:(i)(f)
                          nt authority\system:(i)(f)
ps d:\file\军哥聊技术> wsl --shutdown; icacls "d:\software\wsl\ext4.vhdx" 2>$null
d:\software\wsl\ext4.vhdx builtin\administrators:(i)(f)
                          nt authority\system:(i)(f)
ps d:\file\军哥聊技术> wsl --shutdown; icacls "d:\software\wsl\ext4.vhdx" 2>$null
d:\software\wsl\ext4.vhdx builtin\administrators:(i)(f)
d:\software\wsl\ext4.vhdx builtin\administrators:(i)(f)
                          nt authority\system:(i)(f)
                          nt authority\authenticated users:(i)(m)
                          builtin\users:(i)(rx)
已成功处理 1 个文件; 处理 0 个文件时失败
ps d:\file\军哥聊技术> $env:username
23670
ps d:\file\军哥聊技术> icacls "d:\software\wsl\ext4.vhdx" /grant "${env:username}:(f)"
d:\software\wsl\ext4.vhdx: 拒绝访问。
已成功处理 0 个文件; 处理 1 个文件时失败
ps d:\file\军哥聊技术> start-process powershell -verb runas -argumentlist "-command", "icacls 'd:\software\wsl\ext4.vhdx' /grant '23670:(f)'; icacls 'd:\software\wsl' /grant '23670:(oi)(ci)(f)'; pause"
ps d:\file\军哥聊技术> wsl -l -v
  name      state           version
* ubuntu    stopped         2
ps d:\file\军哥聊技术> wsl
wsl: 检测到 localhost 代理配置,但未镜像到 wsl。nat 模式下的 wsl 不支持 localhost 代理。
to run a command as administrator (user "root"), use "sudo <command>".
see "man sudo_root" for details.
(base) wyj@wyj:/mnt/d/file/军哥聊技术$

到此这篇关于wsl2 启动报错“拒绝访问“ e_accessdenied 完整解决方案的文章就介绍到这了,更多相关wsl2 启动报错内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com