WSL2 啟動(dòng)報(bào)錯(cuò)“拒絕訪問(wèn)“ E_ACCESSDENIED 完整解決方案
前言
將 WSL 遷移到非系統(tǒng)盤(pán)(如 D 盤(pán))后,再次啟動(dòng)時(shí)可能遇到 “拒絕訪問(wèn)” 錯(cuò)誤,本文記錄完整排查與修復(fù)過(guò)程。
一、問(wèn)題現(xiàn)象
打開(kāi) PowerShell,輸入 wsl 啟動(dòng),報(bào)錯(cuò)如下:
PS D:\file\軍哥聊技術(shù)> wsl 無(wú)法將磁盤(pán)"\\?\D:\Software\wsl\ext4.vhdx"附加到 WSL2: 拒絕訪問(wèn)。 錯(cuò)誤代碼: Wsl/Service/CreateInstance/MountDisk/HCS/E_ACCESSDENIED
根本原因:當(dāng)前 Windows 用戶對(duì) WSL2 虛擬磁盤(pán)文件
ext4.vhdx沒(méi)有完全控制權(quán)限,導(dǎo)致 WSL 無(wú)法掛載磁盤(pán)。
二、解決步驟
2.1 關(guān)閉 WSL
先確保 WSL 完全關(guān)閉:
wsl --shutdown
2.2 查看當(dāng)前文件權(quán)限
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有完全控制權(quán)限(F)- 普通用戶只有讀取和執(zhí)行權(quán)限
(RX),缺少寫(xiě)入權(quán)限
2.3 查看當(dāng)前用戶名
$env:USERNAME
記住輸出的用戶名(例如 23670),下一步要用。
2.4 以管理員身份修復(fù)權(quán)限
普通終端沒(méi)有權(quán)限修改該文件的 ACL,直接運(yùn)行 icacls /grant 會(huì)報(bào)"拒絕訪問(wèn)":
# ? 普通權(quán)限下會(huì)失敗 icacls "D:\Software\wsl\ext4.vhdx" /grant "23670:(F)" # 輸出:D:\Software\wsl\ext4.vhdx: 拒絕訪問(wèn)。
正確做法——通過(guò) Start-Process -Verb RunAs 提權(quán)執(zhí)行,運(yùn)行后會(huì)彈出 UAC 管理員確認(rèn)窗口,點(diǎn)擊 “是”:
Start-Process powershell -Verb RunAs -ArgumentList "-Command", "icacls 'D:\Software\wsl\ext4.vhdx' /grant '你的用戶名:(F)'; icacls 'D:\Software\wsl' /grant '你的用戶名:(OI)(CI)(F)'; pause"
?? 注意:將
你的用戶名替換為上一步獲取的實(shí)際用戶名。例如用戶名為
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"
參數(shù)說(shuō)明:
| 參數(shù) | 含義 |
|---|---|
(F) | Full Control,完全控制權(quán)限 |
(OI) | Object Inherit,子文件繼承此權(quán)限 |
(CI) | Container Inherit,子文件夾繼承此權(quán)限 |
等彈出的管理員窗口顯示 “請(qǐng)按任意鍵繼續(xù)” 后,說(shuō)明權(quán)限修復(fù)成功。
2.5 重新啟動(dòng) 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/軍哥聊技術(shù)$
? WSL 啟動(dòng)成功!
三、常見(jiàn)原因總結(jié)
| 原因 | 說(shuō)明 |
|---|---|
| WSL 遷移到非系統(tǒng)盤(pán) | 從 C 盤(pán)遷移到 D 盤(pán)后,新位置的文件權(quán)限未正確繼承 |
| Windows 更新 | 系統(tǒng)更新后可能重置部分文件夾權(quán)限 |
| 手動(dòng)移動(dòng) vhdx 文件 | 復(fù)制/移動(dòng)虛擬磁盤(pán)文件時(shí)權(quán)限丟失 |
| 多用戶環(huán)境 | 其他管理員創(chuàng)建的 WSL 實(shí)例,當(dāng)前用戶無(wú)權(quán)限 |
四、補(bǔ)充:關(guān)于 localhost 代理警告
啟動(dòng)時(shí)可能看到以下警告:
wsl: 檢測(cè)到 localhost 代理配置,但未鏡像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。
這條警告 不影響 WSL 正常使用,可以忽略。如需消除,在 %USERPROFILE%\.wslconfig 中添加:
[wsl2] networkingMode=mirrored
保存后執(zhí)行:
wsl --shutdown wsl
重啟即可消除警告。
總結(jié)
| 步驟 | 命令 |
|---|---|
| 關(guān)閉 WSL | wsl --shutdown |
| 查看權(quán)限 | icacls "D:\Software\wsl\ext4.vhdx" |
| 查看用戶名 | $env:USERNAME |
| 提權(quán)修復(fù)權(quán)限 | Start-Process powershell -Verb RunAs ... |
| 重啟 WSL | wsl |
核心思路:用管理員權(quán)限給當(dāng)前用戶授予 vhdx 文件的完全控制權(quán)限,一行命令即可解決。
PS D:\file\軍哥聊技術(shù)> 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 個(gè)文件; 處理 0 個(gè)文件時(shí)失敗
PS D:\file\軍哥聊技術(shù)> $env:USERNAME
PS D:\file\軍哥聊技術(shù)> 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 個(gè)文件; 處理 0 個(gè)文件時(shí)失敗
PS D:\file\軍哥聊技術(shù)> 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\軍哥聊技術(shù)> 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\軍哥聊技術(shù)> 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\軍哥聊技術(shù)> 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\軍哥聊技術(shù)> 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\軍哥聊技術(shù)> 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 個(gè)文件; 處理 0 個(gè)文件時(shí)失敗
PS D:\file\軍哥聊技術(shù)> $env:USERNAME
23670
PS D:\file\軍哥聊技術(shù)> icacls "D:\Software\wsl\ext4.vhdx" /grant "${env:USERNAME}:(F)"
D:\Software\wsl\ext4.vhdx: 拒絕訪問(wèn)。
已成功處理 0 個(gè)文件; 處理 1 個(gè)文件時(shí)失敗
PS D:\file\軍哥聊技術(shù)> 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\軍哥聊技術(shù)> wsl -l -v
NAME STATE VERSION
* Ubuntu Stopped 2
PS D:\file\軍哥聊技術(shù)> wsl
wsl: 檢測(cè)到 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/軍哥聊技術(shù)$到此這篇關(guān)于WSL2 啟動(dòng)報(bào)錯(cuò)“拒絕訪問(wèn)“ E_ACCESSDENIED 完整解決方案的文章就介紹到這了,更多相關(guān)WSL2 啟動(dòng)報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
django虛擬環(huán)境(virtualenv)的創(chuàng)建
在使用django開(kāi)發(fā)項(xiàng)目的時(shí)候,一個(gè)環(huán)境只能對(duì)應(yīng)一個(gè)項(xiàng)目,若不安裝虛擬環(huán)境、都裝在系統(tǒng)里面,每次項(xiàng)目加載都需要加載所有的安裝包,本文就介紹django虛擬環(huán)境的安裝,感興趣的可以了解一下2021-08-08
利用Python開(kāi)發(fā)Markdown表格結(jié)構(gòu)轉(zhuǎn)換為Excel工具
在數(shù)據(jù)管理和文檔編寫(xiě)過(guò)程中,我們經(jīng)常使用 Markdown 來(lái)記錄表格數(shù)據(jù),但它沒(méi)有Excel使用方便,所以本文將使用Python編寫(xiě)一個(gè)轉(zhuǎn)換工具,希望對(duì)大家有所幫助2025-03-03
Python對(duì)list列表進(jìn)行去重的幾種方法
python?列表就是我們js中的數(shù)組了,我們下文整理幾個(gè)常用的python?列表去重實(shí)現(xiàn)方法,非常的簡(jiǎn)單好用,通過(guò)代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-10-10
Python3的unicode編碼轉(zhuǎn)換成中文的問(wèn)題及解決方案
這篇文章主要介紹了Python3的unicode編碼轉(zhuǎn)換成中文的問(wèn)題及解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
利用Python統(tǒng)計(jì)Jira數(shù)據(jù)并可視化
目前公司使用 Jira 作為項(xiàng)目管理工具,在每一次迭代完成后的復(fù)盤(pán)會(huì)上,我們都需要針對(duì)本次迭代的 Bug 進(jìn)行數(shù)據(jù)統(tǒng)計(jì),以幫助管理層能更直觀的了解研發(fā)的代碼質(zhì)量。本篇文章將介紹如何利用統(tǒng)計(jì) Jira 數(shù)據(jù),并進(jìn)行可視化,需要的可以參考一下2022-07-07
Python爬蟲(chóng)DNS解析緩存方法實(shí)例分析
這篇文章主要介紹了Python爬蟲(chóng)DNS解析緩存方法,結(jié)合具體實(shí)例形式分析了Python使用socket模塊解析DNS緩存的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2017-06-06
Python發(fā)送郵件實(shí)現(xiàn)基礎(chǔ)解析
這篇文章主要介紹了Python發(fā)送郵件實(shí)現(xiàn)基礎(chǔ)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08

