v2rayNをダブルクリックしても反応しない、ウィンドウがすぐ消える、更新後に起動できない場合に役立つ内容です。まず画面が終了しているのか、プロキシ用コアの起動に失敗しているのかを切り分け、ランタイム、展開先フォルダー、権限、設定を順に確認します。一度に変更するのは一項目だけにし、元のフォルダーとログは残しておきましょう。最後に新しいフォルダーで比較すると原因を絞り込めます。Androidでは後半のv2rayNGの強制終了に関する項目を確認してください。
まず確認:アプリの終了か、プロキシ用コアの起動失敗か
「起動しない」には、ウィンドウが通知領域に隠れている、画面のプロセス自体が終了している、画面は表示されるがプロキシ用コアが動いていない、という異なる状態があります。修復が必要なのは後の2つで、それぞれ確認すべき点も異なります。サブスクリプションURLの無効化やノードの停止が原因で、デスクトップアプリがウィンドウ表示前に終了することは通常ありません。
- プロセスはあるがウィンドウがない:
Ctrl + Shift + Escでタスク マネージャーを開き、v2rayNを探します。タスクバーの通知領域も展開し、トレイアイコンからウィンドウを表示できるか試してください。何度もダブルクリックして起動を繰り返すのは避けましょう。 - プロセスがすぐ消える:ダブルクリックした時刻を記録し、ランタイムに関するメッセージ、Windowsのアプリケーションイベント、アプリのログを確認します。
- メイン画面は表示されている:画面下部のログを確認します。待ち受けの失敗やコアファイルが見つからないというメッセージがある場合は、すべての設定を消去する前にポートとファイルを確認してください。
アプリ終了後にブラウザーもインターネットへ接続できない場合、システムプロキシが停止済みのローカル待ち受けポートを参照している可能性があります。Windows 11では「設定」→「ネットワークとインターネット」→「プロキシ」を開き、元の設定を記録してから、今回クライアントが有効にした手動プロキシをオフにします。組織で一元管理されているプロキシは、許可なく変更しないでください。この操作でネットワーク接続は復旧できますが、強制終了の原因が解決したわけではありません。
.NETランタイム:アプリの要件に合わせて選ぶ
v2rayNは、パッケージの種類、画面の実装、配布方法によって要件が異なる場合があります。外部ランタイムに依存するWindows版では、指定されたフレームワークに合うランタイムが必要です。自己完結型のパッケージには必要なランタイムが含まれています。特定のメジャーバージョンのインストール方法をすべてのパッケージに当てはめたり、「.NET SDKをインストール済み」というだけでフレームワークとアーキテクチャが一致していると判断したりしないでください。
-
エラーメッセージを確認
起動時のダイアログに表示されたフレームワーク名、バージョン、アーキテクチャをすべて記録します。プロセスがすぐ終了する場合は、
Win + Rを押してeventvwr.mscと入力し、「Windowsログ」→「アプリケーション」で起動時刻付近の「.NET Runtime」または「Application Error」イベントを確認してください。該当するイベントがなければ、ほかの手掛かりを調べます。 -
アプリの要件を確認
展開先フォルダーにある
*.runtimeconfig.jsonを探し、テキストエディターで読み取り専用で開きます。runtimeOptionsの下にあるframeworkまたはframeworksを確認してください。記載されたフレームワーク名とバージョンは推測より確実です。バージョン番号を手動で下げて起動を強制しないでください。 -
アーキテクチャを確認
Windowsの「設定」→「システム」→「バージョン情報」でシステムの種類を確認し、ダウンロードしたパッケージの要件と照らし合わせます。x64とARM64は別のアーキテクチャです。x64向けのフレームワーク依存アプリは、x86ランタイムをインストール済みというだけでは必要なランタイムがそろっているとは限りません。
-
インストールして再確認
Microsoft公式の.NETダウンロードページから、アプリの要件に合ったサポート対象のランタイムを入手します。必要なフレームワークが
Microsoft.WindowsDesktop.Appの場合は、Windows Desktop Runtimeが入っていることを確認してください。ASP.NET Core Runtimeだけでは代用できません。インストール後にアプリを再起動し、エラー内容に変化があるか確認します。
PowerShellでは、次の読み取り専用コマンドを実行できます。1つ目は現在のコマンドに対応するアーキテクチャのインストール済みランタイムを一覧表示し、2つ目は現在のフォルダーにあるランタイム設定を読み取ります。先に実際の展開先フォルダーへ移動してください。dotnetが見つからない場合、未インストールの可能性も、コマンドのパスが設定されていない可能性もあります。インストール履歴やファイルも併せて確認してください。
dotnet --list-runtimes
Get-Content -Path .\*.runtimeconfig.json
フォルダーと権限:完全に展開し、ブロック履歴を確認
圧縮ファイルのプレビュー画面からアプリを実行すると、一部のファイルしか展開されないことがあります。新しいバージョンを古いフォルダーに上書きすると、互換性のないコンポーネントが残る場合もあります。切り分け用に、現在のユーザーが書き込めるローカルフォルダーを新しく作成してください。例:C:\Users\Public\Documents\v2rayN-test。このパスはあくまで例です。実際に書き込み権限があることも確認してください。
- 完全に展開する:解凍ツールの「すべて展開」機能を使い、パッケージ内のフォルダー構成を維持します。実行ファイルだけを取り出すのは避けてください。
- 書き込みを確認する:対象フォルダーにテキストファイルを作成し、削除してみます。失敗する場合は、フォルダーの権限や保護ポリシーを先に確認してください。成功しても、セキュリティソフトがアプリへの書き込みを許可しているとは限りません。
- ブロック履歴を確認する:「Windows セキュリティ」→「ウイルスと脅威の防止」→「保護の履歴」を開き、発生時刻から対象ファイルと理由を確認します。
- コントロールされたフォルダー アクセスを確認する:保護の履歴に書き込みがブロックされた記録がある場合は、まず適切なユーザーフォルダーに移してテストします。許可が必要な場合は、提供元と用途を確認できたアプリだけを対象にしてください。
- 権限は必要な範囲にとどめる:通常の画面起動には、まず標準ユーザー権限を使います。TUNで必要となる権限とメイン画面の起動可否は別の問題です。常に管理者として実行する方法を一般的な解決策にしないでください。
トラブルの切り分けのためにセキュリティ機能全体を無効にしたり、ドライブ全体を除外対象にしたりしないでください。組織のポリシーで実行が制限されている場合は、管理者に確認を依頼します。Windowsのレピュテーション警告、組織のアプリ制御、ウイルス対策ソフトによる隔離はそれぞれ別の仕組みです。具体的な表示を確認し、すべてを「誤検知」と決めつけないでください。
設定ファイルの破損:新しいフォルダーで比較し、元に戻せる状態にする
ランタイムと展開状態を確認した後で、ユーザーデータを調べます。アップデートの中断、同期ソフトとの競合、突然の電源断などにより、設定やローカルデータベースを読み込めなくなることがあります。データの保存場所やファイル名はバージョンによって変わるため、古い手順を見て特定のフォルダーを削除しないでください。アンインストールを先に行い、後からサブスクリプションのバックアップを探すのも避けましょう。
-
プロセスを終了
まずトレイからv2rayNを終了し、タスク マネージャーでプロセスが終わったことを確認します。アプリがデータを書き込んでいる間は設定を移動しないでください。関連するコアが動いている場合は、バックアップ対象のファイルを使用していないことも確認します。
-
データをバックアップ
元の展開先フォルダー全体をコピーし、アプリが実際にユーザーデータを保存する場所もバックアップします。バックアップにはサブスクリプションURL、ノードの認証情報、ログが含まれる場合があります。自分だけがアクセスできる場所に保存し、公開の掲示板にはアップロードしないでください。
-
比較環境を用意
同じインストールパッケージを新しい書き込み可能なフォルダーに完全に展開します。サブスクリプションや設定を移さずに起動してください。そのバージョンがユーザーデータ用の共通フォルダーを使う場合、新しい展開先だけでは環境が分離されないことがあります。該当バージョンの説明でデータの保存先を確認するか、Windowsのテスト用アカウントで検証してください。
-
設定を少しずつ戻す
設定なしで起動できたら、サブスクリプションのグループを1つ追加して動作を確認し、その後にルーティング、カスタムDNS、その他の設定を戻します。項目を1つ戻すたびにアプリを終了して再起動してください。古い設定をまとめて上書きすると、切り分けたばかりの問題が再発することがあります。
判断の基準は明確です。同じパッケージがクリーンな環境で起動するなら、実行環境はおおむね正常で、古いデータやユーザー単位の設定を優先して調べます。クリーンな環境でも強制終了する場合は、ランタイム、ファイルの展開漏れ、システムとの互換性、セキュリティポリシーを引き続き確認してください。結論を正しく出すには、テスト環境を独立させる必要があります。
エラーから原因を探す:ランタイム、ファイルアクセス、待ち受けポート
以下は実際に表示される可能性のあるエラーの例です。すべてのバージョンで同じ表現になるとは限りません。前後のファイルパス、ポート、コアの出力を含め、エラー全体を保存してください。「起動に失敗しました」という表示だけでは、適切な対処を判断できないことがほとんどです。
You must install or update .NET to run this application.
原因:現在のプロセスが要件を満たす.NETフレームワークを見つけられません。対処:続けて表示されるフレームワーク名、バージョン、アーキテクチャに合うランタイムをインストールし、同じアプリを再起動して確認します。
System.UnauthorizedAccessException: Access to the path
原因:対象のファイルまたはフォルダーへのアクセスが拒否されています。対象は例外の詳細で確認できます。対処:該当パスの読み書き権限と保護履歴を確認し、まずユーザーが書き込めるフォルダーで再試行します。システムフォルダーの権限をむやみに広げないでください。
System.IO.FileNotFoundException
原因:必要なファイルまたはアセンブリが見つかりません。展開漏れ、隔離、異なるバージョンのファイル混在などが考えられます。対処:例外に記載されたファイル名を確認し、独立したフォルダーに完全展開し直して、該当時刻のセキュリティ履歴を確認します。
Only one usage of each socket address (protocol/network address/port) is normally permitted.
原因:待ち受けに使用するアドレスとポートが別のプロセスに使用されています。コアの起動時によく発生します。対処:使用中のプロセスを特定し、重複して起動したインスタンスを終了するか、クライアントで設定されている待ち受けポートを確認して変更します。
ログにローカルの待ち受けポートとして10808が明記されている場合に限り、次のコマンドで確認します。このポートは切り分けの例であり、すべてのバージョンの既定値を示すものではありません。結果に表示されるPIDをタスク マネージャーの「詳細」タブで照合してください。見覚えのないPIDというだけでシステムプロセスを終了しないでください。
netstat -ano | findstr ":10808"
出力に表示されるローカルアドレスのポートとLISTENINGの状態を確認し、リモート側のポート番号が偶然同じ接続と混同しないようにします。ポートを変更した後は、システムプロキシや手動設定したアプリが参照するポートも確認してください。ポートの競合では通常コアが起動できなくなりますが、v2rayNのメイン画面まで必ず終了するとは限りません。
v2rayNGの強制終了:Androidではアプリ側を確認
v2rayNGはXrayコアを使用するAndroidクライアントで、Windows用の.NETデスクトップランタイムには依存しません。v2flyNGはv2flyコアを使用しており、両者のデータやコアの動作を同じものと見なすことはできません。スマートフォンで起動直後に終了する場合は、デスクトップ向けのランタイムを調べるのではなく、インストールパッケージのアーキテクチャ、OSとの互換性、空き容量、アプリデータを確認してください。
- まず発生するタイミングを確認:アプリを開くとすぐ終了する場合は、初期化やローカルデータの問題が考えられます。接続ボタンを押した後に失敗する場合は、VPNの許可、コアのログ、現在の設定も確認してください。
- インストールパッケージを確認:端末のアーキテクチャに合ったAndroidパッケージを選びます。わからない場合はダウンロードページのプラットフォーム説明を確認してください。デスクトップ版のファイルや別のクライアントのデータフォルダーを、アプリにそのままコピーしないでください。
- まずキャッシュを削除:システムの「設定」→「アプリ」→「v2rayNG」→「ストレージとキャッシュ」から、まずキャッシュを削除します。メーカーによってメニュー名が異なることがあります。キャッシュとアプリデータは別の項目です。
- バックアップ後にリセット:サブスクリプションURLと必要な設定をバックアップした場合に限り、アプリデータの消去や再インストールを検討してください。データを消去するとローカル設定も削除され、その後自動的に復元されるとは限りません。
- バックグラウンド制限を確認:起動直後に終了するのではなく、画面ロック後に切断される場合は、バッテリー最適化やバックグラウンド動作の制限を確認してください。アプリを開いた瞬間のクラッシュとは別の問題です。
修復後の確認:再起動してからプロキシ設定を戻す
ウィンドウが開くのは最初の一歩です。いったんクライアントを終了して再起動し、設定が保存できることを確認してから、利用可能とわかっているノードを選んでコアを起動します。最初の動作確認では設定をシンプルに保ち、カスタムルーティング、特殊なDNS、TUNは追加しないでください。問題の原因を特定できるよう、これらは後から一つずつ戻します。
ランタイムをインストールしたのに起動しないのはなぜ?
エラーに記載されたフレームワーク名とアーキテクチャを再確認し、dotnet --list-runtimesの結果と照らし合わせます。不足を知らせるメッセージが消えて別の例外が表示された場合は、問題が発生する段階が変わっています。新しいエラーを調べ、同じコンポーネントを何度もインストールするのは避けてください。
管理者として起動できた場合、そのまま使い続けてもよい?
アプリが保護されたフォルダーにあるか、元のユーザーに設定を書き込む権限があるかを確認します。書き込み可能なフォルダーに移し、標準ユーザー権限で再度テストしてください。TUNを使う場合は必要な権限を別途確認し、画面の起動とネットワーク制御を混同しないようにします。
新しいフォルダーなら起動する場合、古いサブスクリプションは残せる?
元のフォルダーのバックアップを残し、クリーンな環境でサブスクリプションのグループを一つずつ追加して、更新後にログを確認します。古いデータ全体をコピーするのは避けてください。特定の項目を追加した後に問題が再現した場合は、操作とエラーを記録し、その項目を戻して再度確認します。
サポートを依頼するとき、何を伝えればよい?
クライアントの実際のバージョン、パッケージの種類、OSのバージョンとアーキテクチャ、発生時刻、再現手順、機密情報を伏せたエラー部分を伝えてください。サブスクリプションURL、ノードのアドレス、パスワード、ユーザー識別情報は隠します。クリーンな環境でも失敗するかを添えると、空白のウィンドウのスクリーンショットだけより役立ちます。
最後に次の3点を確認します。標準ユーザーで繰り返し起動できること、終了後に設定が正常に保存されること、プロキシをオフにするとシステムのネットワーク接続が復旧すること。さらに調べる場合は、応用設定を参考にコア、ルーティング、DNSを確認し、接続の問題を起動時の強制終了と取り違えないようにしてください。