v2rayN 開啟即閃退或啟動當機:.NET 執行階段、資料夾權限與設定檔排查

整理 v2rayN 閃退常見原因:缺少 .NET 桌面執行階段、資料夾無寫入權限、設定檔損毀;並說明 v2rayNG 在 Android 背景停止的處理方式。

本文摘要

在 v2rayN 上按兩下後沒有視窗,先確認程序是否仍在執行,再依序檢查執行階段、檔案是否完整解壓、資料夾寫入權限及使用者設定。若視窗正常,但代理無法啟動,請改查核心與連接埠;若 Android 用戶端在鎖定螢幕後停止,則檢查背景限制與 VPN 授權。本文以 Windows 桌面版為主,提供可重複操作的排查步驟,並說明如何保留訂閱與原有設定。

一、先確認是視窗隱藏、程式當機,還是核心停止

「一開就閃退」可能是三種不同情況:主畫面縮到通知區域、圖形介面程序確實結束,或介面仍在但核心沒有啟動。v2rayN 是圖形介面用戶端,V2Ray、Xray 則是處理連線的核心;訂閱會儲存節點資料,路由分流則決定連線使用哪個出口。若問題發生在啟動畫面出現之前,通常無法靠更新訂閱或更換 VMess、VLESS 節點解決。

確認程序 檢查執行階段 確認資料夾可寫入 隔離設定檔 查看核心記錄

二、.NET 執行階段:先確認需求,再安裝相符架構

Windows 傳統 WPF 版與桌面版的介面技術及封裝方式可能不同,不能把所有安裝包都當成需要相同的執行階段。依賴框架的程式需要裝置安裝相應執行階段;自包含封裝通常已附帶所需執行階段。看到「You must install or update .NET to run this application.」時,應依錯誤視窗顯示的 Framework、Version 和 Architecture 安裝,不要隨意安裝名稱含有 .NET 的元件。

錯誤訊息:You must install or update .NET to run this application.

原因與處理方式:找不到程式所需的 .NET 共用架構,或目前版本不符合需求;記下錯誤視窗中的架構名稱、版本需求與架構,再安裝相符的 Microsoft 官方執行階段。

錯誤訊息:You must install .NET Desktop Runtime to run this application.

原因與處理方式:程式需要 Windows 桌面執行階段;WPF 封裝應確認已安裝 .NET Desktop Runtime,而非只安裝 ASP.NET Core Runtime 或舊版 .NET Framework。

在命令提示字元或 PowerShell 執行下列命令,可列出目前呼叫到的 dotnet 主機所能找到的共用執行階段。WPF 所需的項目名稱通常是 Microsoft.WindowsDesktop.App;只有 Microsoft.NETCore.App 並不代表已安裝桌面框架。

dotnet --list-runtimes
where.exe dotnet
  1. 確認架構:在 Windows「設定」→「系統」→「關於」查看系統類型,再核對程式錯誤視窗中的需求。x64 程式必須搭配 x64 執行階段,不能用 x86 執行階段取代。
  2. 確認框架:若解壓資料夾中有 v2rayN.runtimeconfig.json,可用文字編輯器以唯讀方式查看框架名稱與版本需求。請勿修改檔案,強迫程式使用不相容的執行階段。
  3. 完成安裝:從 Microsoft 官方管道下載符合需求的執行階段,關閉已開啟的用戶端程序後再重新啟動。安裝較新的主版本,不代表一定符合程式原本要求的主版本。

若系統顯示找不到 dotnet 命令,只能表示目前的命令搜尋路徑找不到它,不能據此判定所有執行階段都不存在。反過來說,自包含封裝能否啟動,也不能只靠這個命令判斷。請優先參考啟動錯誤視窗、封裝說明與執行設定檔。

三、完整解壓與資料夾權限:先改用可寫入的資料夾測試

直接在壓縮檔預覽視窗中按兩下主程式,可能只會暫時解出單一執行檔,依賴程式庫、核心與資源檔並未一併解壓。若將程式解壓到受保護的資料夾,建立記錄、儲存設定或產生核心設定檔時也可能失敗。遇到這類問題,應先透過完整解壓及可寫入資料夾進行測試,不要把「一律以系統管理員身分執行」當成預設解法。

  1. 結束程序

    從系統匣選單結束 v2rayN,再到工作管理員確認舊程序已結束。若已啟用 TUN 或額外服務,請先在用戶端關閉相關功能,避免將殘留服務誤認為主程式重複啟動。

  2. 完整解壓

    使用解壓縮工具的「全部解壓縮」功能,將整個封裝解壓到新的空資料夾。不要只複製 v2rayN.exe,也不要直接混合覆寫新舊兩套程式。

  3. 測試寫入

    建議先在目前使用者有寫入權限的本機資料夾測試,例如 %LOCALAPPDATA%\V2RayN-Test。在目標資料夾中建立並刪除一般文字檔,確認基本寫入操作正常。

  4. 一般方式啟動

    先以一般使用者權限啟動,不匯入舊設定,也不啟用 TUN。確認空白介面能正常開啟後,再逐項還原設定;TUN 等功能需要提升權限時,應另行處理。

若移動資料夾後恢復正常,請繼續檢查原資料夾「內容」→「安全性」中的使用者權限,以及 Windows 安全性「病毒與威脅防護」→「保護歷程記錄」是否有相關封鎖紀錄。不要為了啟動程式而關閉整套安全防護,也不要從不明來源補上單一 DLL。企業裝置的存取控制應請管理員確認。

四、設定檔損毀:備份後先隔離,不要直接清空

若在修改設定、異常關機或更新後才開始閃退,而同一個安裝包在獨立設定環境中能正常開啟,就應優先檢查使用者設定。設定檔遭截斷、欄位型別錯誤、資料檔損毀或舊欄位遷移失敗,都可能導致程式讀取設定時結束。訂閱伺服器暫時無法連線,通常會造成更新失敗,不應直接推斷本機設定已損毀。

錯誤訊息:System.Text.Json.JsonException

原因與處理方式:讀取 JSON 時發生語法或型別錯誤;請搭配完整記錄確認檔案路徑,先備份,再隔離相關設定檔。不要只看到例外名稱,就刪除所有 JSON 檔案。

錯誤訊息:System.UnauthorizedAccessException

原因與處理方式:存取檔案或資料夾遭拒;依例外訊息中的實際路徑,檢查讀寫權限與安全軟體記錄。請先排除存取問題,不要把設定內容當成損毀處理。

即使重新解壓到另一個資料夾仍然閃退,也不能因此排除設定檔問題:若兩次啟動共用相同的使用者資料資料夾,程式仍可能讀取原有資料。正確的恢復判準是「確認使用獨立設定後可以開啟」,而不是只看「程式換了資料夾」。

五、介面能開啟但代理失敗:檢查核心與連接埠

主視窗穩定顯示時,排查重點應從 .NET 轉向核心。v2rayN 的系統代理開關會讓遵循系統代理設定的應用程式使用本機入口;流量進入核心後,路由規則才會選擇出口。若核心沒有啟動,本機監聽連接埠可能不存在,此時反覆切換全域或繞過中國大陸模式通常無濟於事。

先開啟「設定」→「參數設定」,確認目前版本介面中的本機監聽位址與連接埠。以下以 127.0.0.1:10808 為檢查範例;這不是所有安裝環境通用的固定值,請替換成實際設定的連接埠。執行命令後,請確認本機位址、狀態是否為 LISTENING,以及最右欄的 PID。

netstat -ano | findstr ":10808"
tasklist /FI "PID eq 2468"

第二行的 2468 只是 PID 參數範例,請替換成第一行實際顯示的數字。若查到的是遠端位址包含該連接埠的連線,而非本機監聽,就不能據此認定連接埠已被占用。確認占用程序後,先從該程式介面結束它,或在用戶端變更監聽連接埠,並同步調整手動填入代理位址的應用程式。

錯誤訊息:bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

原因與處理方式:本機位址與連接埠已被其他程序占用;確認 PID 對應的程式,停止重複執行的執行個體或改用未占用的連接埠。請勿只憑程序名稱就強制結束系統服務。

錯誤訊息:The system cannot find the file specified.

原因與處理方式:要求存取的檔案不存在;檢查記錄中指出的核心、資源或設定檔路徑,重新完整解壓對應封裝。不要把所有檔案遺失問題都歸咎於執行階段。

六、Android 背景停止:檢查 v2rayNG 與 v2flyNG 的授權

Android 裝置使用 v2rayNG 或 v2flyNG,不需要安裝 Windows 的 .NET 桌面執行階段。v2rayNG 使用 Xray 核心,v2flyNG 使用 V2Fly 核心。若應用程式在前景時可以連線,只有鎖定螢幕或切換應用程式後才停止,請優先檢查電池限制、背景執行與 VPN 授權;若點開應用程式後立即退出,則應按應用程式當機處理,不能直接歸因於省電策略。

  1. 檢查背景限制:前往 Android「設定」→「應用程式」→對應用戶端→「電池」,查看是否允許背景執行,或有沒有「不受限制」選項。不同廠牌的選單名稱可能不同,請以目前系統顯示為準,並留意調整後的耗電情況。
  2. 重新授權 VPN:在用戶端中再次點選連線,閱讀系統顯示的 VPN 連線要求並確認。若同時有其他 VPN 服務正在執行,請先確認要保留哪一個,再停止可能衝突的服務。
  3. 檢查權限是否遭撤銷:在應用程式資訊頁面查看「未使用的應用程式」相關設定。權限自動撤銷與背景限制是不同的設定;只恢復目前功能確實需要的權限,不要為了排查問題一次授予所有權限。
  4. 區分介面與服務:通知消失不一定代表程序已當機,通知權限也不等於 VPN 授權。請綜合用戶端連線狀態、實際連線結果及系統中的應用程式資訊判斷。

需要重新安裝時,請先確認訂閱來源與必要設定已備份到私人位置,再前往下載中心依裝置架構選擇安裝方式。不要先執行「清除儲存空間」,才開始尋找訂閱網址;這項操作可能會清除本機節點與應用程式設定,也無法保證修復由系統策略造成的背景停止。

七、常見問題與排查結果記錄

已安裝 .NET,為什麼仍提示缺少執行階段?

重新核對錯誤視窗中的框架名稱、主版本與架構。WPF 所需的桌面框架不能用 ASP.NET Core Runtime 取代,x64 與 x86 也不能混用。使用 where.exe dotnet 檢查命令實際指向的位置,再對照 dotnet --list-runtimes 的結果。

以系統管理員身分執行就能開啟,之後都要這樣用嗎?

先在可寫入的資料夾中以一般權限測試。若只是舊資料夾無法寫入,應修正資料夾權限或移動程式位置;TUN 等功能所需的提權則另行處理。長期提高整個程式的權限,可能會掩蓋原本可找出的存取問題。

更換節點或更新訂閱,能解決啟動閃退嗎?

若程式連主畫面都無法開啟,請先處理執行階段、程式檔案及設定讀取問題。只有進入介面後出現訂閱更新失敗或特定節點連線失敗,才進一步檢查訂閱網址、網路與節點參數。

完全沒有錯誤視窗,該去哪裡查看記錄?

按 Win + R,輸入 eventvwr.msc,前往「Windows 記錄」→「應用程式」,依故障時間尋找 Application Error 或 .NET Runtime 相關事件,記錄應用程式路徑、例外資訊與發生時間。並非每次當機都會同時出現這兩類事件。

若仍需進一步尋求協助,請提供系統類型、安裝包類型、是否使用獨立設定、最後一次能成功啟動時的操作條件,以及相同時間的錯誤資訊。請先遮蔽記錄中的訂閱連結、伺服器位址、使用者識別資訊與憑證;保留錯誤類型、檔名與連接埠等排查資訊即可。

下載v2rayN依平台選擇用戶端