WSL2 启动报错“拒绝访问“ E_ACCESSDENIED 完整解决方案
前言
将 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)可以看到:
Administrators和SYSTEM有完全控制权限(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
重启即可消除警告。
总结
| 步骤 | 命令 |
|---|---|
| 关闭 WSL | wsl --shutdown |
| 查看权限 | icacls "D:\Software\wsl\ext4.vhdx" |
| 查看用户名 | $env:USERNAME |
| 提权修复权限 | Start-Process powershell -Verb RunAs ... |
| 重启 WSL | wsl |
核心思路:用管理员权限给当前用户授予 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 启动报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python实现的接收邮件功能示例【基于网易POP3服务器】
这篇文章主要介绍了python实现的接收邮件功能,结合实例形式分析了Python基于网易POP3服务器接收邮件相关操作技巧,需要的朋友可以参考下2019-09-09
keras的backend 设置 tensorflow,theano操作
这篇文章主要介绍了keras的backend 设置 tensorflow,theano操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-06-06
Pycharm 2020最新永久激活码(附最新激活码和插件)
最近很多朋友的Pycharm激活时间又过期了,今天小编再把激活的方法汇总和工具分享一下,文中给大家分享两种方式,需要的朋友直接拿去用吧2020-01-01
Django+uni-app实现数据通信中的请求跨域的示例代码
这篇文章主要介绍了Django+uni-app实现数据通信中的请求跨域的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-10-10


最新评论