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

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

  • 前言
  • 一、问题现象
  • 二、解决步骤
    • [2.1 关闭 WSL](#2.1 关闭 WSL)
    • [2.2 查看当前文件权限](#2.2 查看当前文件权限)
    • [2.3 查看当前用户名](#2.3 查看当前用户名)
    • [2.4 以管理员身份修复权限](#2.4 以管理员身份修复权限)
    • [2.5 重新启动 WSL](#2.5 重新启动 WSL)
  • 三、常见原因总结
  • [四、补充:关于 localhost 代理警告](#四、补充:关于 localhost 代理警告)
  • 总结

前言

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


一、问题现象

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

bash 复制代码
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 完全关闭:

powershell 复制代码
wsl --shutdown

2.2 查看当前文件权限

powershell 复制代码
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 查看当前用户名

powershell 复制代码
$env:USERNAME

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

2.4 以管理员身份修复权限

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

powershell 复制代码
# ❌ 普通权限下会失败
icacls "D:\Software\wsl\ext4.vhdx" /grant "23670:(F)"
# 输出:D:\Software\wsl\ext4.vhdx: 拒绝访问。

正确做法 ------通过 Start-Process -Verb RunAs 提权执行,运行后会弹出 UAC 管理员确认窗口 ,点击 "是"

powershell 复制代码
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,完整命令为:

powershell 复制代码
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

powershell 复制代码
wsl

正常输出:

bash 复制代码
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 中添加:

ini 复制代码
[wsl2]
networkingMode=mirrored

保存后执行:

powershell 复制代码
wsl --shutdown
wsl

重启即可消除警告。


总结

步骤 命令
关闭 WSL wsl --shutdown
查看权限 icacls "D:\Software\wsl\ext4.vhdx"
查看用户名 $env:USERNAME
提权修复权限 Start-Process powershell -Verb RunAs ...
重启 WSL wsl

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

bash 复制代码
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/军哥聊技术$
相关推荐
Yanjun2i几秒前
Agent学习记录四:多工具时如何处理
人工智能·python·学习·agent
creator_Li4 分钟前
深度学习 学习笔记
pytorch·深度学习
李少兄14 分钟前
Java 中只有值传递吗?
java·开发语言·python
我有满天星辰22 分钟前
第一次使用 Milvus:给我的 AI 知识库装上“记忆”
人工智能·milvus
名字还没想好☜26 分钟前
Spring @EventListener 事件驱动解耦实战:同步转异步、事务绑定与顺序控制
java·数据库·后端·python·spring
YOLO数据集集合29 分钟前
天空反无人机检测数据集 | 无人机检测 多旋翼识别 固定翼识别 低空安防 目标检测9063期
人工智能·yolo·目标检测·计算机视觉·无人机·反无人机
一木 之林34 分钟前
插件、MCP、Skill 的区别?
java·c++·人工智能
JiMoKuangXiangQu43 分钟前
在 AllWinner T507 上部署 Qwen2.5-0.5B 大语言模型
人工智能·llama.cpp·推理引擎
szarron1 小时前
RF Demo Kit|NanoVNA 射频演示测试板完整上手教程,滤波器、衰减器、SOLT 校准学习板
开发语言·人工智能·学习·php·射频工程·频谱仪