Windowsでv2rayNをダブルクリックしてもウィンドウが表示されない、ランタイムのインストールを求められる、起動直後に終了する、またはメイン画面は開くのにコアを起動できない場合が対象です。まず、どの段階で問題が起きているかを確認し、.NET、フォルダー権限、プログラムファイル、ローカルポートを調べます。一度に変更するのは1項目だけにし、元のフォルダーとログを残しましょう。サブスクリプションやノードの接続問題と、プログラムの起動問題を混同せずに切り分けられます。
まずメインプログラムとコアの終了を切り分ける
v2rayNは管理画面で、接続処理はXrayなどのコアが担います。メインプログラムは起動時に設定を読み込み、ローカルデータベースを開いて画面を初期化します。ノードを選択すると、実行用の設定を生成して対応するコアを起動します。そのため、「起動しない」と「接続できない」は別の問題です。ここでは.NET、フォルダー権限、コアファイルの順に確認しますが、この順番は発生頻度を示すものではありません。
ダブルクリックしたら、まずタスクバー右側の隠れているアイコンを確認し、Ctrl + Shift + Escでタスクマネージャーを開きます。v2rayNのプロセスと通知領域のアイコンが表示されている場合は、アイコンからメイン画面を開いてみましょう。何度もダブルクリックして、切り分けの条件を増やさないでください。プロセスが表示された直後に消える場合は、ランタイムとアプリケーションログを確認します。
| 確認できる症状 | まず確認する項目 | 記録しておく情報 |
|---|---|---|
| .NETのインストールまたは更新を求められる | ランタイムの種類・バージョン・アーキテクチャ | Framework、Version、Architecture |
| ウィンドウが表示されず、プロセスがすぐ終了する | アプリケーションエラー、設定の読み込み、書き込み権限 | イベントビューアーに記録された例外の種類 |
| メイン画面は開くが、コアを起動できない | コアファイル、実行設定、ポート | コアログに最初に記録されたエラー |
| 通知領域のアイコンはあるが、ウィンドウが見えない | ウィンドウが隠れている、画面外にある | 直前に外部ディスプレイを取り外したか |
.NET Desktop Runtime:パッケージの要件に合わせてインストール
WindowsのWPF画面には.NETのデスクトップコンポーネントが必要です。.NET RuntimeだけではWindows Desktop Runtimeが含まれない場合があります。また、.NET Framework 4.8がインストール済みでも、最新の.NETの依存関係が満たされているとは限りません。自己完結型の配布パッケージには通常必要なランタイムが含まれますが、フレームワーク依存型のパッケージでは、システムに対応するランタイムが必要です。まず、使用中のパッケージの説明とエラーメッセージを確認してください。
パッケージのアーキテクチャを確認
Windowsの「設定」→「システム」→「バージョン情報」を開き、「システムの種類」を確認します。次に、ダウンロードしたパッケージがx64かARM64かを確認してください。ランタイムのアーキテクチャは、プロセッサの型番だけで判断せず、実際に起動するプログラムに合わせます。
依存関係を確認
プログラムフォルダーに
v2rayN.runtimeconfig.jsonがある場合は、テキストエディターで開き、frameworkまたはframeworks内のnameとversionを読み取り専用で確認します。依存関係を回避するためにバージョン文字列を変更しないでください。ランタイムをインストール
Microsoftの.NETダウンロードページで、エラーに表示されたメジャーバージョンとアーキテクチャを選びます。WPFパッケージが
Microsoft.WindowsDesktop.Appを要求する場合は、対応する.NET Desktop Runtimeをインストールしてください。ASP.NET Core Runtimeだけでは不十分です。終了して再確認
インストール後、起動中のプロセスを終了し、同じプログラムフォルダーから起動します。同じメッセージが表示される場合は、エラーに示されたアーキテクチャとバージョンをあらためて照合してください。関係のないメジャーバージョンを次々とインストールする必要はありません。
PowerShellで次の読み取り専用コマンドを実行すると、現在のコマンドが参照する.NETホストから認識できるランタイムを一覧表示できます。「dotnetが認識されません」と表示されても、そのコマンドが使えないことを示すだけで、自己完結型パッケージが動かないという意味ではありません。アーキテクチャの異なるホストでは、インストール結果の見え方も異なる場合があります。
dotnet --info
dotnet --list-runtimes
依存関係にMicrosoft.WindowsDesktop.Appと8.0.0と記載されている場合は、対応するアーキテクチャの.NET 8 Desktop Runtimeがあるか確認します。通常は同じ系列の新しい互換パッチでも要件を満たせます。ここでの8.0.0は読み方の例であり、すべてのv2rayNが.NET 8を使うという意味ではありません。実際の依存関係は使用中のパッケージで確認し、より新しいメジャーバージョンなら必ず代用できると考えないでください。
エラー:You must install or update .NET to run this application.
原因と対処:プログラムが要件を満たすランタイムを見つけられていません。メッセージに表示されたFramework、Architecture、バージョンを確認し、適合するランタイムをインストールします。WindowsDesktopフレームワークが示されている場合は、デスクトップランタイムが揃っているか確認してください。
フォルダー権限:書き込み可能な場所で試す
ポータブル版は、すべてのファイルを展開してから実行してください。圧縮ファイルを開いた画面から直接プログラムを起動すると、一部のファイルしか一時フォルダーに展開されないことがあります。保護されたフォルダー、読み取り専用の媒体、書き込み制限のある同期フォルダーでは、設定、ログ、データベースを保存できない場合もあります。「管理者として実行」を恒久的な解決策にしないでください。フォルダー権限の問題を見えにくくするおそれがあります。
元のフォルダーを保管する
通知領域からv2rayNを終了し、タスクマネージャーで関連プロセスがすべて終了したことを確認します。元のフォルダーをバックアップし、設定ファイルは削除しないでください。プログラムの実行中にデータベースを移動するのも避けましょう。
すべてのファイルを展開する
エクスプローラーのアドレスバーに
%LOCALAPPDATA%と入力し、v2rayN-testフォルダーを作成します。同じ完全版パッケージをその中に展開してください。初回の確認では、古い設定をコピーしません。書き込みを確認
テスト用フォルダーにテキストファイルを作成し、保存してから削除します。失敗する場合は、フォルダーの「プロパティ」→「セキュリティ」で現在のアカウントのアクセス許可を確認してください。組織のポリシーで管理されている端末は、管理者に相談します。
設定を引き継がずに起動
新しいフォルダーのメインプログラムを、通常のユーザー権限で起動します。起動できたら一度終了し、再度起動して設定が保持されることを確認してから、サブスクリプションやルーティング設定を移行してください。
エラー:Access to the path '…' is denied.
原因と対処:プロセスが指定されたファイルまたはフォルダーへのアクセスを拒否されています。ログに記録された完全なパスを確認し、現在のアカウントの読み書き権限とセキュリティソフトの記録を調べてください。ディスク全体の権限を緩めず、個人用の書き込み可能なフォルダーに移して再確認します。
エラー:The process cannot access the file because it is being used by another process.
原因と対処:対象のファイルが別のプロセスによって使用中です。複数起動したv2rayNや、そのファイルを処理している同期ツールを終了してから、再起動してください。使用中のデータベースを直接削除しないでください。
新しいフォルダーでは正常に動作し、古いフォルダーで問題が起きる場合は、原因を古い設定、ファイル、または元のパスの環境に絞れます。古いフォルダーの内容をすべて一度に戻すと、問題も再発するおそれがあります。まずサブスクリプション、次にルーティング設定、最後にその他の設定を復元し、その都度再起動して確認してください。
コアの不足・セキュリティによる隔離:実際のパスを確認
画面は開くのにコアがすぐ終了する場合は、メイン画面のログまたは情報欄を確認し、実際に起動した実行ファイルのパスと最初のエラーを探します。バージョンやパッケージによってフォルダー構成が異なるため、記憶に頼ってコア用フォルダーを作成しないでください。Xrayの設定生成エラー、ファイルの隔離、アーキテクチャの不一致も「コアの起動失敗」として現れることがあります。
- ファイルが見つからない:ログに記録されたパスをエクスプローラーで確認します。ダウンロードパッケージに完全版と別の配布形式がある場合は、説明に従って必要なファイルを揃えてください。できるだけ完全版を新しいフォルダーに再展開し、異なるバージョンのファイルを混在させないでください。
- ファイルが隔離された:Windowsの「設定」→「プライバシーとセキュリティ」→「Windowsセキュリティ」→「ウイルスと脅威の防止」→「保護の履歴」を開き、エラーが発生した時刻に該当する記録がないか確認します。Windows 10では「更新とセキュリティ」から開きます。
- システムによって起動がブロックされた:まずファイルの入手元とセキュリティ警告の内容を確認します。安全性を確認したうえで、セキュリティポリシーに従って該当項目を処理してください。端末全体の保護を無効にしたり、ダウンロードフォルダー全体を除外対象にしたりしないでください。
- コアは起動するが設定エラーになる:エラーが示す項目名と行番号を記録し、最近変更したルーティング、DNS、ノードの設定を確認します。コアのJSON構文エラーを.NETの再インストールで解決しようとしないでください。
独自の完全な設定ファイルを使用している場合は、現在のコアとバージョンに対応しているかも確認してください。V2RayとXrayでサポートされる設定項目が完全に同じとは限りません。他の環境からコピーした設定は、実行ファイル名を置き換えるだけでなく、項目ごとに確認しましょう。
ポート競合とログ:記録から原因を特定
ローカルの受け入れポートが使用中だと、コアの起動に失敗することがありますが、管理画面まで終了するとは限りません。以下では10808を例に検索します。この番号がすべてのバージョンの既定ポートという意味ではありません。まずv2rayNの「設定」→「パラメータ設定」で実際のローカル待ち受けポートを確認します。画面のバージョンによって項目名が異なる場合があるため、コマンドの数字は確認した値に置き換えてください。
netstat -ano | findstr ":10808"
tasklist /FI "PID eq 1234"
1つ目の結果では、「ローカル アドレス」列が対象のポートと一致し、状態がLISTENINGになっているか確認します。PIDは最後の列に表示されます。2つ目のコマンドにある1234は例なので、実際に確認したPIDに置き換えてください。リモートポートの一致や別の接続状態をローカルの待ち受けと誤認しないでください。正体のわからないシステムプロセスを終了するのも避けましょう。
エラー:bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
原因と対処:コアが待ち受けようとしたアドレスとポートは、すでに使用されています。使用中のプロセスを特定して重複起動したインスタンスを終了するか、パラメータ設定で空いているポートに変更してください。そのポートを手動で指定しているアプリの設定も合わせて変更します。
メインプログラムが一瞬で終了し、確認できるクライアントログが残らない場合は、Win + Rを押してeventvwr.mscと入力し、「Windowsログ」→「アプリケーション」を開きます。起動した時刻を目安に、ソースが.NET RuntimeまたはApplication Errorの記録を探してください。障害が発生したアプリケーションのパス、例外の種類、障害モジュールを記録します。イベントIDだけで原因を断定することはできません。
- UnauthorizedAccessExceptionが表示される:例外に記録されたパスを確認し、フォルダー権限を調べます。
- 設定またはデータベースの読み込みエラーが表示される:新しいフォルダーで設定を引き継がずに起動し、古いデータベースはそのまま保管します。ユーザーデータをすべて削除しないでください。
- ネイティブモジュールのエラーが表示される:モジュール名、システムアーキテクチャ、クライアントパッケージの種類を記録し、完全版とシステム要件を確認してください。出所不明のサイトから、同名のDLLだけをダウンロードしないでください。
設定の復元とよくある質問
修復後の確認は2段階に分けます。まず、サブスクリプションを読み込まずに2回連続で正常に起動し、終了と設定の保存ができることを確認します。次に、動作が確認できている設定を1つ読み込み、コアを起動してローカルポートを確認します。その後もWebページを開けない場合は、接続の問題を別途調査します。Webページが開けないことだけで、起動時の問題が直っていないと判断することはできません。
.NETをインストール済みなのに、ランタイム不足と表示されるのはなぜですか?
dotnet --list-runtimesを実行し、起動時のメッセージと照合してください。Microsoft.WindowsDesktop.Appが不足していないか、メジャーバージョンが要件に合っているか、x64とARM64の選択が正しいかを確認します。SDKや別種類のランタイムがインストールされていても、この3点の確認に代えることはできません。
管理者として実行すると起動できます。このまま使い続けてもよいですか?
まず通常起動に必要なフォルダーの書き込み権限を確認してください。TUNを使う場合、仮想NICの作成やルーティングの変更に管理者権限が必要になることがありますが、これは別の要件です。2種類の権限の問題を混同しないよう、先に通常モードで起動できることを確認します。
アップデート後に起動しなくなりました。古いフォルダーに直接上書きしてもよいですか?
まず古いフォルダーを保管し、関連するプロセスをすべて終了してから、新しいパッケージを別の場所に展開してください。設定を引き継がずに起動できることを確認したら、画面からサブスクリプションを再登録し、ルールを段階的に戻します。データベースを移行する場合は、異なるバージョンから同じデータベースを同時に読み書きしないでください。
ログがありません。問い合わせには何を伝えればよいですか?
Windowsのバージョンとシステムアーキテクチャ、v2rayNのバージョン、Desktop版かWPF版か、発生時刻、ポップアップの全文、イベントビューアーの記録を伝えてください。「ウィンドウが表示される前に終了する」のか「コアの起動後に失敗する」のかも説明し、ユーザー名を含むパスと接続認証情報は隠してください。