是否可以從 Linux 終端機的 Windows 子系統內部開啟 Windows 應用程式?

是否可以從 Linux 終端機的 Windows 子系統內部開啟 Windows 應用程式?

因此,最近我下載了適用於 Windows 的 Linux 的 Ubuntu 安裝,因為我想學習如何使用 bash shell。到目前為止我一直很喜歡它,但想知道是否有辦法做到上述幾點?假設我的電腦上安裝了 iTunes,並且我想從 Linux 終端機打開它。那可能嗎?我嘗試進入終端機中的桌面資料夾並打開 .lnk 文件,但它只是向我拋出“無法執行二進位檔案:Exec 格式錯誤”。有人知道是否可能嗎?

答案1

是的,WSL 支援啟動 Windows 應用程式執行檔(例如 iTunes)從 shell 內。但是,正如評論中提到的,lnk文件是不是支持,因為它們不是執行檔。他們是連結到可執行檔。

WSL 也夠好(預設)將 Windows 路徑附加到 Linux 路徑。因此,對於路徑中的應用程式(例如notepad.exe),您可以直接使用該appname.exe格式啟動它們。

對於不在路徑中的應用程式(例如itunes.exe),您需要確定實際.exe(可執行檔)的位置,並使用完整路徑啟動它。這實際上與 Linux 下的任何 Linux 執行檔或 Windows PowerShell 或 CMD 下的任何 Windows 執行檔相同。

要查找 iTunes 的完整路徑,只需右鍵單擊lnk資源管理器中的檔案並選擇“特性”。這“目標”字段會有類似的東西C:\Program Files\iTunes\iTunes.exe

如前所述,如果您嘗試在 Windows PowerShell 或 CMD 解釋器(bashLinux 下的 Windows「等效項」)中啟動它,您仍然需要完整路徑,因此您將執行:

C:\Program Files\iTunes\iTunes.exe

bash若要在 WSL 中啟動該特定路徑,您可以使用:

/mnt/c/Program\ Files/iTunes/iTunes.exe

如果您需要協助將 Windows 路徑轉換為 Linux 路徑,可以使用下列命令:

wslpath 'C:\Program Files\iTunes\iTunes.exe'

有關 Windows/WSL 互通性的詳細信息,請參閱這個文檔

答案2

WSL 可以透過某些方式本機啟動 Windows 二進位文件互通以及使用binfmt_misc

LNKOTOH 不是可執行文件,而是一種儲存元資料的文件,供 Windows Shell 連結到任何類型的文件,而不僅僅是可執行文件。由於它是一個普通文件,您需要使用某些應用程式打開它。在 cmd 中,使用預設關聯程序開啟任何檔案的方法是使用start。所以在舊的 WSL 中你可以這樣做

cmd.exe /c start ~/Desktop/iTunes.lnk

顯然%Windir%\System32必須位於您的路徑中(預設),否則您必須修復您的 WSL 環境。 PowerShell 中的等值項是Start-Process或者Invoke-Item

powershell.exe -Command Start-Process ~/Desktop/iTunes.lnk
powershell.exe -Command Invoke-Item ~/Desktop/iTunes.lnk

對於大多數類型的文件,您也可以explorer.exe直接使用

explorer.exe ~/Desktop/iTunes.lnk

然而在 WSL2 中你有一個新指令可以做到這一點

wslview ~/Desktop/iTunes.lnk

其他一些解決方案開始wsl-打開埃彭


例如,以下任一命令都會在資源管理器中開啟目前目錄

explorer.exe .
wslview .
powershell.exe -Command Start-Process .
powershell.exe -C Invoke-Item .
cmd /c start .

或開啟一些 pdf 文件

explorer.exe my.pdf
wslview my.pdf
powershell.exe -Command Start-Process my.pdf
powershell.exe -C Invoke-Item my.pdf
cmd /c start my.pdf

相關內容