无尘阁日记

无尘阁日记

windows10安装wsl ubuntu,提示拒绝访问,怎么解决?
2026-05-02

意思是:你现在打开的 PowerShell / CMD 权限不够,需要用“管理员权限”运行。

也就是 wsl --update 这个操作要改系统组件,普通窗口执行不了,所以提示:

请求的操作需要提升

英文一般是:

The requested operation requires elevation.

解决方法

方法一:用管理员 PowerShell 执行

  1. 点击 Windows 左下角开始菜单;

  2. 搜索:

PowerShell
  1. 右键 Windows PowerShell

  2. 选择 以管理员身份运行

  3. 再执行:

wsl --update

然后继续执行:

wsl --set-default-version 2
wsl --install -d Ubuntu --web-download

方法二:用管理员 Windows Terminal

如果你装了 Windows Terminal:

  1. 开始菜单搜索:

Windows Terminal
  1. 右键;

  2. 选择 以管理员身份运行

  3. 执行:

wsl --update

如果你右键没有“以管理员身份运行”

说明当前 Windows 账户可能不是管理员账户。

你可以先检查:

net user %username%

看里面有没有类似:

本地组成员  *Administrators

如果没有,那你需要切换到管理员账户,或者让电脑管理员帮你授权。


你现在该做的就是这个

直接关闭当前窗口,重新打开一个 管理员 PowerShell,然后按顺序执行:

wsl --shutdown
wsl --update
wsl --set-default-version 2
wsl --install -d Ubuntu --web-download

如果 wsl --update 还是报错,把完整报错截图或文字发我,我继续帮你定位。


我问:

问题我就说以管理员运行的。

AI答:

你这个情况我明白了:不是你没点“以管理员运行”,而是系统实际没有给当前窗口完整管理员令牌,或者 wsl.exe 被异常路径/策略拦住了。

先别继续乱装,按下面排。


一、先验证:这个窗口到底是不是真管理员

在你那个“管理员 PowerShell”里执行:

net session

情况 A:如果返回类似这个

发生系统错误 5。
拒绝访问。

那就说明:这个窗口看起来是管理员,但实际没提权成功。

继续执行:

whoami /groups | findstr /i "S-1-16-12288"

如果没有输出,说明当前窗口不是高权限管理员令牌。


二、换 CMD 管理员,不要用 PowerShell 试一次

有时候 PowerShell/Terminal 权限状态会很诡异。你这样操作:

开始菜单搜索:

cmd

右键 命令提示符以管理员身份运行

然后执行:

net session

如果这次不报“拒绝访问”,再执行:

wsl --update

微软 WSL 排障文档也明确提到,安装或更新 WSL 时需要确认命令行用户具备管理员权限,并建议右键终端选择“Run as Administrator”。(Microsoft Learn)


三、用绝对路径执行 wsl,排除路径劫持

在管理员 CMD 里执行:

where wsl

正常应该看到:

C:\Windows\System32\wsl.exe

然后直接执行:

C:\Windows\System32\wsl.exe --update

如果你看到多个 wsl.exe,或者不是 C:\Windows\System32\wsl.exe 排第一,那就可能是路径混乱。


四、换成 web-download 更新方式

如果普通更新还是提示权限问题,试这个:

wsl --update --web-download

然后再执行:

wsl --status

微软官方安装说明里也提供了 --web-download 方式,用来绕开 Microsoft Store 下载路径的问题。(Microsoft Learn)


五、如果 net session 都是拒绝访问,说明你的账号不是“真正管理员”

执行:

net user %username%

看里面有没有:

本地组成员  *Administrators

如果没有,你这个账号不是管理员。

如果有,但还是无法提权,可能是 UAC 或组策略限制。继续执行:

whoami /groups

重点看有没有:

BUILTIN\Administrators

以及完整性级别是不是:

高强制级别

六、修复 WSL 功能,不走 wsl --update

如果 wsl --update 一直不行,先把底层功能打开:

管理员 CMD 执行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
bcdedit /set hypervisorlaunchtype auto

然后重启电脑

重启后管理员 CMD 执行:

wsl --set-default-version 2
wsl --install -d Ubuntu --web-download

WSL 2 需要启用 VirtualMachinePlatform,并且 Windows 10 版本也要满足要求,微软手动安装文档里对 Windows 10 Build 有明确要求。(Microsoft Learn)


七、最关键的一步:你现在先执行这个

在你所谓的“管理员窗口”里执行:

net session

如果它还是提示:

系统错误 5
拒绝访问

那就不用怀疑了:当前窗口并没有真正拿到管理员权限。

这时候请用:

开始菜单 → 搜索 cmd → 右键 → 以管理员身份运行

不要从普通 PowerShell 里再启动,不要从 VSCode 终端里启动,也不要从普通 Windows Terminal 标签页里启动。


我问:

net session执行结果是:列表是空的。

AI答:

那就很关键了:net session 显示“列表是空的”,说明你这个窗口确实已经是管理员权限。

所以现在问题不是“你没管理员运行”,而是下面几类之一:

  1. wsl --update 调用了 Store / WSL 更新包时被系统策略或组件拦住;

  2. 当前 wsl.exe 状态异常;

  3. WSL 功能没完整启用或没重启生效;

  4. Windows 10 版本太老,wsl --update 这套新命令支持不完整;

  5. Microsoft Store / App Installer 组件有问题。

微软官方说明里,wsl --install 和相关安装更新命令要求 Windows 10 Version 2004、Build 19041 及以上;旧版本需要走手动安装路线。(Microsoft Learn)


你现在按这个顺序继续

第一步:确认 wsl.exe 路径

在管理员 CMD 里执行:

where wsl

正常应该优先看到:

C:\Windows\System32\wsl.exe

然后直接用绝对路径执行:

C:\Windows\System32\wsl.exe --status
C:\Windows\System32\wsl.exe --update --web-download

重点是第二条:--web-download,它会绕开 Microsoft Store 下载路径。微软文档也建议安装卡住或商店路径异常时使用 --web-download。(Microsoft Learn)


第二步:如果还提示“请求的操作需要提升”,先跳过 update

你不一定非要先跑 wsl --update。直接重新启用底层组件。

管理员 CMD 执行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

bcdedit /set hypervisorlaunchtype auto

然后重启电脑

重启后执行:

wsl --set-default-version 2
wsl --install -d Ubuntu --web-download

三、如果你的 Windows 10 版本偏老,走手动安装

先查版本:

winver

如果不是 Windows 10 2004 / Build 19041 以上,不要继续折腾 wsl --update,直接走老版本手动路线。

管理员 CMD 执行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启后,手动安装 WSL2 Linux 内核更新包。

你可以用浏览器打开微软官方手动安装页,下载:

WSL2 Linux kernel update package for x64 machines

微软官方手动安装步骤明确要求:先启用 WSL 功能,再启用 Virtual Machine Platform,然后安装 WSL2 Linux kernel update package。(Microsoft Learn)


四、我建议你现在直接执行这 5 条

管理员 CMD,不要 PowerShell:

where wsl
C:\Windows\System32\wsl.exe --status
C:\Windows\System32\wsl.exe --update --web-download
winver
wsl --list --online

把这几条的输出发我,尤其是:

where wsl
wsl --status
winver 里的版本号和 OS 内部版本

我就能判断你到底是 版本太老Store 路径问题、还是 WSL 组件损坏


我问:

where wsl,执行结果没返回。

AI答:

这就更明确了:where wsl 没返回,说明系统现在找不到 wsl.exe

但这里有一个坑:如果你是在 PowerShell 里执行的,where 可能不是 Windows 的 where.exe,而是 PowerShell 的别名,所以可能假装“没结果”。

你现在先这样做。


一、先确认你是在 CMD 还是 PowerShell

如果窗口前面是:

PS C:\Windows\System32>

那是 PowerShell。

请执行这个:

where.exe wsl
Get-Command wsl

如果是在 CMD,前面一般是:

C:\Windows\System32>

那执行:

where.exe wsl

二、直接检查 wsl.exe 文件在不在

不管 CMD 还是 PowerShell,都执行:

dir C:\Windows\System32\wsl.exe

情况 A:能看到文件

比如看到:

C:\Windows\System32\wsl.exe

那说明 wsl.exe 存在,只是 PATH 或当前终端解析有问题

直接执行:

C:\Windows\System32\wsl.exe --status
C:\Windows\System32\wsl.exe --update --web-download

情况 B:提示找不到文件

那说明你的 Windows 当前确实没有装好 WSL 系统组件。

管理员 CMD 执行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

bcdedit /set hypervisorlaunchtype auto

然后重启电脑

微软官方手动安装文档也要求先启用 Microsoft-Windows-Subsystem-Linux,再启用 VirtualMachinePlatform,之后重启机器。(Microsoft Learn)


三、重启后再检查

重启后,管理员 CMD 执行:

where.exe wsl
wsl --status
wsl --install -d Ubuntu --web-download

微软官方安装文档里也提到,wsl --install 可以安装 WSL 和 Ubuntu;如果安装过程卡住,可以用 --web-download 绕开商店下载路径。(Microsoft Learn)


四、如果启用功能后还是没有 wsl.exe

执行:

winver

看 Windows 10 的版本号。

WSL 2 对 Windows 10 有版本要求:x64 至少要 Windows 10 Version 1903,Build 18362.1049 以上;ARM64 至少 Version 2004,Build 19041 以上。(Microsoft Learn)

如果版本太老,wsl --updatewsl --install 这些新命令就可能不完整或不可用。


你现在最该发我这三个结果

复制执行:

where.exe wsl
dir C:\Windows\System32\wsl.exe
winver

重点看:

dir C:\Windows\System32\wsl.exe

这一条。如果这个文件不存在,我们就走“启用系统组件 + 重启 + 手动内核包”的路线。