v2rayNをダブルクリックしてもウィンドウが表示されない場合は、まずプロセスが動作中か確認し、ランタイム、完全な展開と書き込み権限、ユーザー設定の順に調べます。画面は表示されるのにプロキシを起動できない場合は、コアとポートを確認してください。Androidクライアントが画面ロック後に停止する場合は、バックグラウンド制限とVPNの許可を確認します。ここではWindowsデスクトップ版を中心に、繰り返し実行できる確認手順と、サブスクリプションや既存設定を保持する方法を紹介します。
1. ウィンドウの非表示・アプリのクラッシュ・コアの停止を見分ける
「起動するとすぐ落ちる」といっても、主に3つの状態が考えられます。メイン画面が通知領域に最小化されている、GUIプロセスが実際に終了している、または画面は表示されているもののコアが起動していない状態です。v2rayNはGUIクライアントで、V2RayやXrayは接続を処理するコアです。サブスクリプションにはノード情報が保存され、ルーティング設定によって接続に使うアウトバウンドが決まります。画面が表示される前に起きる問題は、通常、サブスクリプションの更新やVMess・VLESSノードの変更では解決しません。
- ウィンドウは表示されないが、プロセスは存在する:
Ctrl + Shift + Escでタスクマネージャーを開き、「詳細」からv2rayN.exeを探します。タスクバーの通知領域も確認し、トレイアイコンからメイン画面を開けるか試してください。何度もダブルクリックして起動要求を重ねないでください。 - プロセスが一瞬表示されてすぐ消える:発生時刻を記録し、後述の順にランタイム、権限、設定を確認します。エラーダイアログが表示された場合は、「開けない」だけでなく、エラー全文を控えてください。
- メイン画面は正常だが、プロキシの起動時にエラーが出る:クライアントのログ欄を確認してください。GUIのクラッシュではなく、コアの起動失敗として別の手順で調べます。
2. .NETランタイム:必要条件を確認して、対応するアーキテクチャをインストール
Windowsの従来型WPF版とデスクトップ版では、UI技術やパッケージ方法が異なる場合があります。すべてのインストーラーに同じランタイム要件を当てはめないでください。フレームワーク依存型のアプリには、対応するランタイムを端末にインストールする必要があります。一方、自己完結型パッケージには必要なランタイムが含まれているのが一般的です。「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
- アーキテクチャを確認:Windowsの「設定」→「システム」→「システム情報」でシステムの種類を確認し、アプリのダイアログに表示された要件と照合します。x64アプリにはx64ランタイムが必要です。x86ランタイムでは代用できません。
- フレームワークを確認:展開先に
v2rayN.runtimeconfig.jsonがある場合は、テキストエディターで開き、フレームワーク名とバージョン要件を読み取り専用で確認できます。互換性のないランタイムを使わせるために、ファイルを変更しないでください。 - ランタイムをインストール:要件を満たすランタイムをMicrosoftの公式サイトから入手します。インストール後、起動中のクライアントを終了してから再度起動してください。より新しいメジャーバージョンを入れても、アプリが必要とするバージョンを満たすとは限りません。
dotnetコマンドが見つからないと表示されても、現在の検索パスから見つからなかったことを示すだけで、すべてのランタイムが存在しないとは限りません。反対に、このコマンドだけで自己完結型パッケージが起動できるかどうかを判断することもできません。起動時のダイアログ、パッケージの説明、ランタイム設定ファイルを優先して確認してください。
3. 完全な展開とフォルダー権限:まず書き込み可能な場所で試す
圧縮ファイルのプレビュー画面から実行ファイルをダブルクリックすると、実行ファイルだけが一時展開され、依存ライブラリやコア、リソースファイルが一緒に展開されないことがあります。また、保護されたフォルダーに展開すると、ログの作成、設定の保存、コア設定の生成に失敗する場合があります。まずは完全に展開し、書き込み可能な場所で動作を確認してください。「常に管理者として実行」を標準の対処法にしないでください。
-
プロセスを終了する
トレイメニューからv2rayNを終了し、タスクマネージャーで既存のプロセスが終了したことを確認します。TUNや追加サービスを有効にしている場合は、クライアントで該当機能を先に停止し、サービスの残留を本体の二重起動と取り違えないようにしてください。
-
ファイルを完全に展開する
圧縮ツールの「すべて展開」機能を使い、パッケージ全体を新しい空のフォルダーに展開します。
v2rayN.exeだけをコピーしたり、新旧2つのプログラムをそのまま混在させて上書きしたりしないでください。 -
書き込みを確認する
まずは、現在のユーザーに書き込み権限があるローカルフォルダーで試してください。例:
%LOCALAPPDATA%\V2RayN-Test。対象フォルダー内で通常のテキストファイルを作成し、削除できることを確認します。 -
通常の権限で起動する
まずは一般ユーザーの権限で起動し、古い設定を読み込まず、TUNも有効にしない状態で試してください。空の画面が開いたら、設定を1つずつ戻します。TUNに必要な昇格は別途対応してください。
フォルダーを移動して正常に戻った場合は、元のフォルダーの「プロパティ」→「セキュリティ」でユーザー権限を確認します。また、Windowsセキュリティの「ウイルスと脅威の防止」→「保護の履歴」に該当するブロックがないかも確認してください。起動させるためにセキュリティ機能全体を無効にしたり、出所不明のDLLを個別にコピーしたりしないでください。企業端末のアクセス制御については、管理者に確認してください。
4. 設定ファイルの破損:バックアップして切り分け、すぐに削除しない
設定の変更後、異常終了後、またはアップデート後にクラッシュし始め、同じインストールパッケージが独立した設定環境では起動できる場合は、ユーザー設定を重点的に確認します。設定ファイルの途中切れ、値の型の不一致、データファイルの破損、旧形式からの移行失敗などにより、設定の読み込み中に終了することがあります。サブスクリプションサーバーに一時的に接続できない場合、通常は更新に失敗します。それだけでローカル設定が壊れていると判断しないでください。
- まずバックアップ:アプリを完全に終了し、古いプログラムフォルダー全体と、そのインストール方式で実際に使用しているユーザーデータフォルダーを、元の階層を保ったままコピーします。バックアップは個人用の場所に保存し、公開共有スペースへの自動同期を避けてください。
- 保存場所を確認:ポータブル版では設定がプログラムと同じ場所に保存される場合があります。インストール版や別のパッケージでは、ユーザーデータフォルダーを使うことがあります。一部のバージョンには
guiConfigsやguiNConfig.jsonがありますが、すべてのバージョンで同じ構成とは限りません。 - 名前を変えて切り分け:実際に読み込まれている設定を見つけたら、該当する設定フォルダーの名前を変更して残します。たとえば、末尾に
.backupを付けてから起動し、新しい設定が生成されるか確認してください。保存場所がわからない場合は、エラーログに記載されたパスを確認します。同名ファイルを一括検索して削除しないでください。 - 1つずつ戻す:まず、信頼できるサブスクリプションを1つ、またはノードを1つだけ戻して起動を確認します。その後、ルーティング、DNS、その他の設定を戻してください。古い設定全体を一度に上書きすると、どの項目が問題を再発させたのか特定できません。
エラー:System.Text.Json.JsonException
原因と対処:JSONの読み込み時に構文または値の型に問題があります。ログ全文からファイルのパスを確認し、まずバックアップしてから該当する設定を切り分けてください。例外名だけを見て、すべてのJSONファイルを削除しないでください。
エラー:System.UnauthorizedAccessException
原因と対処:ファイルまたはフォルダーへのアクセスが拒否されています。例外に記載された実際のパスを確認し、読み書き権限とセキュリティソフトの記録を調べてください。設定内容の破損と決めつける前に、アクセスの問題を解消します。
別のフォルダーに展開してもクラッシュするからといって、設定の問題が除外されるわけではありません。2回の起動で同じユーザーデータフォルダーを使っていれば、アプリは以前のデータを読み込む可能性があります。復旧の判断基準は、プログラムの場所を変えただけではなく、「独立した設定を使って起動できることを確認した」かどうかです。
5. 画面は表示されるのにプロキシが動かない:コアとポートを確認
メインウィンドウが安定して表示されている場合は、.NETではなくコアを中心に確認します。v2rayNのシステムプロキシ設定を有効にすると、システムプロキシに従うアプリがローカルの接続先を使います。ルーティングルールは、トラフィックがコアに渡された後のアウトバウンドを選択します。コアが起動していなければ、ローカルの待ち受けポートも開かない場合があります。その状態で「全般」や「中国本土をバイパス」などのモードを切り替えても、解決につながらないことがほとんどです。
まず「設定」→「パラメーター設定」を開き、使用中のバージョンで表示されるローカルの待ち受けアドレスとポートを確認します。以下では127.0.0.1:10808を確認例として使いますが、すべての環境で同じ値ではありません。実際の設定に合わせてポートを置き換えてください。コマンドの実行結果では、ローカルアドレス、状態がLISTENINGかどうか、最後の列に表示されるPIDを確認します。
netstat -ano | findstr ":10808"
tasklist /FI "PID eq 2468"
2行目の2468はPIDの例です。1行目に実際に表示された数値に置き換えてください。該当ポートを含む接続が表示されても、それがリモートアドレスであり、ローカルの待ち受けではない場合は、ポートが使用中だとは判断できません。使用中のプログラムを特定したら、そのプログラムから終了するか、クライアントの待ち受けポートを変更してください。プロキシアドレスを手動設定しているアプリも、必要に応じて設定を更新します。
エラー:bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
原因と対処:ローカルアドレスとポートを別のプロセスが使用中です。PIDから該当プログラムを特定し、重複したインスタンスを終了するか、空いているポートを使ってください。プロセス名だけを見て、システムサービスを無差別に終了しないでください。
エラー:The system cannot find the file specified.
原因と対処:指定されたファイルが見つかりません。ログに記載されたコア、リソース、設定ファイルのパスを確認し、該当するパッケージ全体を改めて展開してください。不足ファイルをすべてランタイムの問題と決めつけないでください。
6. Androidでバックグラウンド停止:v2rayNGとv2flyNGの権限を確認
Androidではv2rayNGまたはv2flyNGを使用します。Windows用の.NET Desktop Runtimeはインストールしません。v2rayNGはXrayコア、v2flyNGはV2Flyコアを使用します。アプリを前面に表示している間は接続でき、画面ロック後や別のアプリに切り替えた後に停止する場合は、まずバッテリー制限、バックグラウンド動作、VPNの許可を確認してください。アプリを開くとすぐ終了する場合はアプリのクラッシュとして調べ、省電力設定だけが原因だと決めつけないでください。
- バックグラウンド制限を確認:Androidの「設定」→「アプリ」→該当するクライアント→「バッテリー」を開き、バックグラウンド動作が許可されているか、「制限なし」などの設定があるか確認します。メーカーによってメニュー名は異なるため、実際の表示に従ってください。設定変更後はバッテリー消費も確認します。
- VPNの許可を再設定:クライアントで接続をタップし、システムに表示されるVPN接続の確認画面を読んで許可します。別のVPNサービスが動作中の場合は、どちらを使用するか決めてから、競合するサービスを停止してください。
- 権限の自動取り消しを確認:アプリ情報で「未使用のアプリ」に関する設定を確認します。権限の自動取り消しとバックグラウンド制限は別の設定です。トラブル解消のためにすべての権限を許可せず、機能に必要な権限だけを戻してください。
- 画面とサービスを区別:通知が消えても、プロセスがクラッシュしたとは限りません。また、通知の許可はVPNの許可とは別です。クライアントの接続状態、実際に通信できるか、システムのアプリ情報をあわせて確認してください。
再インストールが必要な場合は、サブスクリプションの入手元と必要な設定を個人用の場所にバックアップしてから、ダウンロードセンターで端末のアーキテクチャに合ったインストーラーを選んでください。先に「ストレージを消去」してからサブスクリプションURLを探すのは避けてください。端末内のノードやアプリ設定が消える可能性があり、システムの制限によるバックグラウンド停止が直るとも限りません。
7. よくある質問と確認結果の記録
.NETをインストールしたのに、ランタイムがないと表示されるのはなぜ?
ダイアログに表示されたフレームワーク名、メジャーバージョン、アーキテクチャをもう一度確認してください。WPFに必要なデスクトップフレームワークはASP.NET Core Runtimeでは代用できず、x64とx86も互換性がありません。where.exe dotnetでコマンドの実際の参照先を確認し、dotnet --list-runtimesの結果と照らし合わせてください。
管理者として実行すると起動します。今後もこの方法で使えばいいですか?
まずは書き込み可能なフォルダーで通常の権限で試してください。古いフォルダーに書き込めないだけなら、フォルダーの権限を修正するか、別の場所に移行します。TUNなどに必要な昇格は別途対応してください。アプリ全体を常に高い権限で実行すると、本来特定できるアクセス権の問題が見えにくくなります。
ノードの変更やサブスクリプションの更新で、起動直後のクラッシュは直りますか?
メイン画面も表示されない場合は、まずランタイム、ファイル、設定の読み込みを確認してください。画面が表示された後にサブスクリプションの更新失敗や特定ノードへの接続失敗が発生した場合に限り、サブスクリプションURL、ネットワーク、ノードの設定を調べます。
エラーダイアログが表示されない場合、どこで記録を確認できますか?
Win + Rを押してeventvwr.mscと入力し、「Windowsログ」→「Application」を開きます。障害が発生した時刻をもとに、Application Errorや.NET Runtimeに関するイベントを探し、アプリのパス、例外情報、発生時刻を記録してください。クラッシュのたびに両方のイベントが記録されるとは限りません。
引き続きサポートが必要な場合は、システムの種類、インストールパッケージの種類、独立した設定で試したかどうか、最後に起動できたときの条件、該当時刻のエラー情報を伝えてください。ログに含まれるサブスクリプションURL、サーバーアドレス、ユーザーID、認証情報は隠してください。エラーの種類、ファイル名、ポートなどの特定に必要な情報は残します。
- ランタイムの確認結果:必要なフレームワーク名とアーキテクチャ、インストール後も同じ警告が表示されるかを記録します。
- ファイルと設定の確認結果:新しいフォルダーでのテストと、独立した設定でのテストの結果を分けて記録します。2つの条件を混同しないでください。
- コアの確認結果:メインウィンドウが安定して表示されるか、待ち受けポートが開いたか、ログに最初に出たエラーを記録します。後続の連鎖的なエラーより、最初のエラーのほうが原因特定に役立ちます。