まず、ウィンドウが終了するのか、コアの起動に失敗するのか、バックグラウンド接続がシステムに停止されるのかを切り分け、ランタイム、インストールパッケージのアーキテクチャ、権限を確認します。v2rayNデスクトップ版とv2rayNG Android版を対象に、設定を残したまま調べる手順、実行できる確認コマンド、復旧後の再テスト項目を紹介します。v2flyNGのAndroid権限も、同じシステム設定を参照して確認できます。
1. ウィンドウの終了・コアの停止・接続失敗を切り分ける
「ダブルクリックしても反応しない」と「接続を押してもインターネットにつながらない」は、同じ問題ではありません。v2rayNは管理画面で、XrayやV2Flyはプロキシ通信を処理するコアです。画面が開いてもコアがポートの待ち受けに成功したとは限らず、コアが正常に起動しても、ノードのサーバーアドレス、ポート、認証情報が正しいとは限りません。まず、どの段階で止まるのかを確認すれば、再インストールを繰り返さずに済みます。
- ウィンドウがまったく表示されない:システムのセキュリティ警告、パッケージのCPUアーキテクチャ、依存ランタイムを確認します。
- ウィンドウが表示されてすぐ閉じる:アプリのクラッシュ記録、設定の読み込みエラー、フォルダーへの書き込み権限を確認します。
- ウィンドウは開いたままで、ログに起動失敗と表示される:コアのファイル、ポートの競合、設定項目を確認します。.NET Desktop Runtimeが原因だと決めつけないでください。
- Androidでバックグラウンドにすると切断される:まずVPNの状態とシステムのバックグラウンド制限を確認します。アイコンをタップしてすぐクラッシュするケースとは異なります。
Windowsでは、まずタスクマネージャーでv2rayNのプロセスがすでに動いていないか確認し、次にタスクバーの隠れているインジケーターを確認します。メインウィンドウを閉じても、終了せず通知領域に最小化されている場合があります。すぐにクラッシュと判断しないでください。再試行する前に通知領域のメニューから既存のインスタンスを終了し、複数のインスタンスが同じ設定フォルダーや待ち受けポートを使わないようにします。
2. Windows:パッケージの種類に応じて.NETランタイムを確認
v2rayN Desktop版とWPF版は異なるUI構成のため、アプリ名だけでは依存関係を判断できません。WPFのフレームワーク依存版には、対応する.NET Desktop Runtimeが必要です。自己完結型のパッケージには通常、必要なランタイムが含まれています。まずダウンロードしたパッケージの説明を確認し、展開フォルダー内のv2rayN.runtimeconfig.jsonを調べてください。ファイルの記載を基準にし、「最新のランタイムを入れる」だけで解決すると決めつけないでください。
-
アーキテクチャを確認
Windowsの「設定」→「システム」→「システム情報」を開き、「システムの種類」を確認します。x64またはARM64に合ったパッケージを選んでください。OS名だけを見てファイルを選ばないようにしましょう。
-
すべて展開する
既存のインスタンスを終了し、圧縮ファイルを現在のユーザーが書き込めるフォルダー(例:
C:\Users\Public\Documents\v2rayN-test)にすべて展開します。圧縮ソフトのプレビュー画面から実行したり、実行ファイルだけをコピーしたりしないでください。 -
依存関係を確認
メモ帳で
v2rayN.runtimeconfig.jsonを開きます。フレームワーク項目にMicrosoft.WindowsDesktop.Appが含まれている場合は、記載されたメジャーバージョンとアーキテクチャに合うDesktop Runtimeをインストールします。このファイルがない場合は、パッケージのリリース情報を確認してください。ファイルがないことだけを根拠に、依存関係が不足しているとは判断できません。 -
ランタイムを確認
PowerShellで
dotnet --list-runtimesを実行します。たとえば設定で8.0系が求められている場合は、対応するアーキテクチャに互換性のあるMicrosoft.WindowsDesktop.App 8.0.xがあるか確認してください。Microsoft.NETCore.Appだけでは、Desktop Runtimeがインストール済みとはいえません。 -
再起動する
対応するランタイムをインストールしたら、クライアントを再起動します。コマンドで
dotnetが見つからない場合は、コマンドのパスやインストール状態に問題がある可能性があります。「設定」→「アプリ」→「インストールされているアプリ」も確認し、このコマンドの結果だけで判断しないでください。
エラー:You must install or update .NET to run this application.
原因と対処:必要なランタイムが見つかっていません。メッセージに表示されたFramework、Architecture、バージョンを確認し、該当するコンポーネントをインストールしてください。x86ランタイムをx64依存関係の代わりに使うことはできません。
エラー:A fatal error occurred. The required library hostfxr.dll could not be found.
原因と対処:ランタイムが不足しているか、パッケージのファイルが不完全な可能性があります。まずパッケージの種類を確認してすべて展開し直し、その後、対応するランタイムを修復してください。不明なサイトからDLLだけをダウンロードしてシステムフォルダーに置かないでください。
まだ一瞬で終了する場合は、Win + Rを押してeventvwr.mscを入力し、「Windowsログ」→「アプリケーション」を開きます。起動時刻に対応するApplication Errorまたは.NET Runtimeのイベントを探し、障害が発生したアプリ、例外コード、障害モジュールを記録してください。何度もダブルクリックするより、原因の手がかりになります。
3. 設定と権限:別のフォルダーで最小構成をテスト
アップデート直後のクラッシュは、古い設定、データベースへのアクセス、フォルダーの権限が原因かもしれません。まずクライアントを終了し、元の設定フォルダーと残したいサブスクリプショングループをバックアップしてから、新しいフォルダーで完全なパッケージを実行します。テスト時に古いデータベースやルール一式、ほかの設定をすぐ戻すと、元のデータが原因かどうか判断できません。
- 新しいフォルダーでは起動する:サブスクリプション、ノード、ルーティング設定を一つずつ戻し、項目を戻すたびに再起動します。サブスクリプションを再インポートしたら、まずノードを一つだけテストしてください。
- 新しいフォルダーでもクラッシュする:ノード設定には手を加えず、ランタイム、システムイベント、セキュリティソフトの記録を引き続き確認します。
- アクセス拒否と表示される:現在のユーザーに、プログラムと設定フォルダーへの書き込み権限があることを確認します。管理者として常に実行することを、フォルダー権限の修復代わりにしないでください。
- ファイルが隔離された可能性がある:「Windows セキュリティ」→「ウイルスと脅威の防止」→「保護の履歴」を開き、時刻、パス、検出内容を確認してからファイルの入手元を確かめます。PC全体の保護を無効にしないでください。
4. macOS:アーキテクチャとシステムによるブロックを確認
macOS版のv2rayNでは、Windows用の.NET Desktop Runtimeインストーラーは使いません。まずAppleメニューの「このMacについて」を開き、チップがApple SiliconかIntelかを確認して、対応するビルドを選びます。アーキテクチャが合わないと、起動できない、互換レイヤーが必要になるなどの問題が起きることがあります。ハードウェアに合ったパッケージを優先してください。
- 既存のインスタンスを終了し、展開またはディスクイメージのマウントを済ませたら、パッケージの説明に従ってアプリを「アプリケーション」に移します。ダウンロード中の一時ファイルから何度も起動しないでください。
- 初回起動時に開発元を確認できないという警告が表示されたら、まず配布元とアプリ名全体を確認し、「システム設定」→「プライバシーとセキュリティ」で該当するブロックの記録を調べます。配布元が信頼できると確認できた場合に限り、そのアプリに対してシステムの「このまま開く」を使用してください。
- アプリが破損していると表示されても、すぐにターミナルからセキュリティ属性を再帰的に削除しないでください。正しいアーキテクチャの完全なパッケージを入手し直します。それでも解決しない場合は、「コンソール」アプリで同時刻のクラッシュレポートを確認してください。
- まず通常のプロキシモードで起動し、画面とコアが正常に動くか確認します。TUNなど追加の権限が必要な機能を使う場合に限り、クライアントとシステムの案内に従って許可してください。複数の条件を同時に変えないようにします。
「システムに起動をブロックされた」場合と「プログラムの起動後にクラッシュした」場合は分けて記録します。前者はシステムの警告文を保存し、後者はクラッシュレポートからプロセス名、例外の種類、発生時刻を記録してください。個別アプリの問題を回避するために、システム全体のセキュリティチェックを無効にしないでください。
5. Android:VPNの許可とバックグラウンドのバッテリー制限を切り分ける
v2rayNGはXrayコア、v2flyNGはV2Flyコアを使用します。どちらもAndroidのVPNサービスを通じて通信を処理できますが、対応するプロトコルの範囲は完全には同じではありません。クライアントを変更すればすべてのクラッシュが解決するわけではありません。特にノードが特定のコア機能に依存する場合は注意してください。
アイコンをタップしてすぐ終了し、接続操作まで進んでいない場合は、まずインストールパッケージのアーキテクチャ、システムとの互換性、アプリデータを確認します。VPNの許可は通常、サービスの起動時に求められます。一方、バッテリー制限はバックグラウンドでの動作に影響しやすい設定です。この3つを切り分ければ、不要な権限変更を減らせます。
- 起動直後にクラッシュする:「設定」→「アプリ」→「v2rayNG」→「強制停止」を選び、「ストレージとキャッシュ」でキャッシュを消去してから再試行します。「ストレージを消去」はローカル設定が削除されるため、まだ選ばないでください。
- 接続を押すと失敗する:サービスを再起動し、システムのVPN接続リクエストが表示されたら許可します。「設定」→「ネットワークとインターネット」→「VPN」を開き、別のVPNサービスや「常時接続VPN」の設定が競合していないか確認してください。
- 画面ロック後に切断される:「設定」→「アプリ」→「v2rayNG」→「アプリのバッテリー使用量」を開き、端末に表示される選択肢でバックグラウンド動作を許可するか、「制限なし」に設定します。メーカー独自のシステムには、自動起動を管理する設定が別にある場合もあります。
- 通知だけが表示されない:「設定」→「アプリ」→「v2rayNG」→「通知」を確認します。Android 13以降では、通知の許可とVPN接続の許可は別の権限です。通知が拒否されていても、プロセスがクラッシュした証拠にはなりません。
6. ウィンドウは正常だが接続できない:コアとポートを確認
v2rayNのウィンドウが開いたままで、接続を押したときにエラーが出る場合は、コアのログを確認します。よくある原因は、ローカルの待ち受けポートの競合、コアファイルの不足、現在のコアが対応していないノード設定項目です。この段階で.NETを追加インストールしても、通常は解決しません。
エラー:bind: address already in use
原因と対処:システム上の別のプロセスが、同じアドレスとポートで待ち受けています。重複しているインスタンスを終了するか、クライアントの待ち受け設定で空いているポートに変更し、そのポートを使うアプリの設定も合わせて変更してください。
エラー:Only one usage of each socket address (protocol/network address/port) is normally permitted.
原因と対処:Windowsでよくあるソケット競合のメッセージです。待ち受けているプロセスを特定してから対処してください。ポート番号を見ただけで、正体のわからないシステムプロセスを強制終了しないでください。
「設定」→「パラメーター設定」でローカルの待ち受けポートに10808が設定されている場合、次のPowerShellコマンドで待ち受け中のプロセスを確認できます。このポート番号は例で、すべてのバージョンの既定値ではありません。クライアントに別のポートを設定している場合は、コマンド内の数字も合わせて変更してください。
Get-NetTCPConnection -LocalPort 10808 -State Listen |
Select-Object LocalAddress, LocalPort, OwningProcess
出力されたOwningProcessをもとに、タスクマネージャーの「詳細」タブでPIDを確認します。待ち受けの記録がなければ、ログに戻ってコアが正常に起動したか調べてください。ログがリモート接続の段階まで進み、タイムアウトや認証失敗が発生している場合は、サーバーアドレス、ポート、UUID、通信方式、安全性の設定を確認します。これはクライアントの起動直後のクラッシュとは別の問題です。
- VMessとVLESSのプロトコル項目はサーバー側の設定と一致させる必要があります。プロトコル名だけを変更しても解決しません。
- REALITYなどを使う場合は、選択中のコアとバージョンが該当項目に対応しているか確認し、サーバーから提供されたパラメーターを一つずつ照合してください。
- 復旧テストでは、必要のないカスタムルートとTUNをいったん無効にし、ノードを一つ、通信を取り込む方式を一つだけにします。接続できたら、一項目ずつ元に戻してください。
7. よくある質問と復旧後の確認
.NETをインストール済みなのに、なぜ起動できないのですか?
ランタイムの種類、メジャーバージョン、アーキテクチャを確認してください。WPFのフレームワーク依存版にはDesktop Runtimeが必要で、基本のRuntimeだけでは足りません。別のメジャーバージョンで代用できるとも限りません。起動時のメッセージとruntimeconfigファイルを基準に確認しましょう。
毎回、管理者として実行する必要がありますか?
通常のシステムプロキシモードでは、常に管理者権限で実行する必要はありません。まず現在のユーザーが書き込めるフォルダーにプログラムを置き、権限を修正してください。追加権限が必要なTUN機能は、使用中のバージョンの案内に従います。あらゆる起動エラーを権限不足のせいにしないでください。
Androidでデータを消去すれば解決しますか?
一部のローカルデータの不具合を切り分けられますが、保存済みのノードや設定は削除されます。まずバックアップを取り、アプリを強制停止してキャッシュを消去してください。それでもリセットが必要な場合は、ノードを一つだけ再インポートしてテストします。最初から古い設定をすべて戻さないでください。
サブスクリプションを更新すると、起動時のクラッシュは直りますか?
サブスクリプションの更新で変わるのは主にノード設定です。ランタイム不足やシステムによる起動ブロックは解消できません。設定の読み込み時やコアの起動時に問題が起きている場合に限り、該当ノードの項目を確認します。ウィンドウ自体が開かない場合は、まずアプリの起動段階を調べてください。
問題を報告する前に、OSのバージョン、CPUアーキテクチャ、クライアントの完全なバージョン番号、パッケージの種類、選択中のコアのバージョン、エラーの発生時刻を記録してください。「アイコンを押すとすぐ終了」「接続後にコアが停止」「画面ロック後に切断」のどれに当たるかも明記し、該当時間のログは個人情報を隠して添付します。「開けない」とだけ書いたり、設定ファイル全体を公開したりしないでください。
- デスクトップ版の再テスト:終了してから2回起動し直し、ウィンドウが開いたままで、起動失敗のログが繰り返されないことを確認します。システムプロキシが実際の待ち受けポートを参照しているかも確認してください。
- Android版の再テスト:VPNの許可が完了し、前面で正常に接続できることを確認してから画面ロックをテストします。サービスが停止する場合は、システムのバックグラウンド制限とアプリのログを引き続き確認してください。
- 設定を戻す:サブスクリプション、ルーティング、DNS、TUNの順に一項目ずつ戻し、毎回一つの条件だけを変更します。問題を再現できる最小限の手順を記録してください。