v2rayNをダブルクリックしてもウィンドウが表示されない、エラーが出てすぐ終了する、またはv2rayNGを開いてもすぐ終了する場合に役立ちます。まず、クライアント本体の終了とプロキシコアの起動失敗を切り分け、実行環境、書き込み権限、設定の隔離の順に確認してください。データを消去する前にバックアップを取りましょう。接続時にだけ失敗する場合は、VPN権限やほかのVPNサービスを別途確認します。
まず、起動直後の終了・トレイへの最小化・接続失敗を切り分ける
ウィンドウが見えないからといって、必ずしもクラッシュしたとは限りません。v2rayNが通知領域に最小化されている場合や、すでに起動中のため2つ目のウィンドウが開かない場合があります。Windowsのタスクバー右側にある隠れているインジケーターを表示し、Ctrl + Shift + Escでタスクマネージャーを開いて、「プロセス」または「詳細」タブにv2rayN.exeが残っているか確認してください。何度もダブルクリックすると、二重起動と実際のクラッシュを見分けにくくなります。
クライアントのウィンドウは正常に操作でき、接続をクリックしたときだけエラーが出る場合は、コア、ポート、設定を確認します。v2rayNはデスクトップクライアントで、プロキシ接続は呼び出されたコアが処理します。v2rayNGはXrayコアを使用するAndroidクライアントです。メイン画面の終了とコアの終了は別の問題であり、サブスクリプションを変更しても、デスクトップランタイムの不足は解消されません。
- ウィンドウがまったく表示されない:プロセス、通知領域、ランタイムの警告、システムイベントを確認します。
- ウィンドウが表示されてすぐ閉じる:発生時刻を記録し、例外ログ、フォルダーの権限、設定の読み込みを重点的に確認します。
- ウィンドウは残るが接続できない:クライアントログのコアエラーを確認します。すべてのデータをすぐに消去しないでください。
- Androidで接続をタップすると終了する:VPN権限の確認画面が表示されたか、終了したのは権限確認の前か後かを記録します。
v2rayNのランタイムとアーキテクチャを確認
以下のデスクトップ向け手順はWindowsを対象としています。v2rayNの配布パッケージによって実行方式は異なります。フレームワーク依存型のプログラムには対応する.NETランタイムが必要ですが、自己完結型パッケージには通常ランタイムが含まれています。「.NETをインストール済み」というだけで確認を省略せず、ほかのプラットフォーム向けの依存関係の対処をWindowsに当てはめないでください。
-
システムのアーキテクチャを確認
Windowsの「設定」→「システム」→「バージョン情報」を開き、「システムの種類」を確認します。x64とARM64を見分け、ダウンロードしたパッケージのアーキテクチャと照合してください。ランタイムのアーキテクチャもプログラムに合わせる必要があります。ほかの.NETソフトが動くかどうかだけでは判断できません。
-
起動時のメッセージを確認
ランタイムに関するメッセージが表示されたら、Framework、Architecture、バージョンを記録します。プログラムのフォルダーに
v2rayN.runtimeconfig.jsonがある場合は、テキストエディターでフレームワーク名とバージョンを読み取り専用で確認できます。依存関係を回避するために、バージョン番号を手動で書き換えないでください。 -
ランタイムの一覧を確認
スタートメニューを右クリックし、「ターミナル」または「Windows PowerShell」を開いて、以下のコマンドを実行します。WPF画面を使うフレームワーク依存型パッケージでは、
Microsoft.WindowsDesktop.Appがあるかを重点的に確認してください。Microsoft.NETCore.Appだけでは、デスクトップフレームワークがそろっているとは限りません。 -
不足分を補ってから起動
配布パッケージの説明または起動時のメッセージに従って、適合するランタイムをインストールし、古いプロセスを終了してから再起動します。インストーラーから再起動を求められた場合は、先に再起動してください。特定のメジャーバージョンのランタイムが、すべてのクライアントの配布パッケージに適用できるとは限りません。
dotnet --list-runtimes
ターミナルでdotnetが見つからないと表示されても、現在のコマンド環境で対応するホストが見つからなかったことを示すだけで、自己完結型プログラムが起動できない証拠にはなりません。起動時のメッセージと配布パッケージの種類に戻って確認してください。反対に、コマンドの出力があっても、表示されたフレームワークとアーキテクチャが適合しているか確認が必要です。
You must install or update .NET to run this application.
原因と対処:プログラムが要件を満たす.NETランタイムを見つけられていません。メッセージに記載されたフレームワーク名、バージョン、アーキテクチャに合う依存関係を追加してください。デスクトップフレームワークと通常のランタイムを混同しないようにします。
フォルダーの書き込み権限とシステムのエラーログ
クライアントの起動時には、設定、データベース、ログへの書き込みが必要になることがあります。圧縮ファイル内から直接実行する、保護されたフォルダーに置く、同期ツールがデータファイルをロックしている、といった状況では起動が中断することがあります。ポータブル版はまず完全に解凍し、現在のユーザーが書き込める専用フォルダー(例:C:\Users\Public\Documents\v2rayN-test)に置いてください。組織のポリシーでその場所が制限されている場合は、自分のドキュメントフォルダーを使用します。
- 書き込みをテスト:使用予定のフォルダーにテキストファイルを新規作成し、保存してから削除します。テストに失敗した場合は、まずフォルダーの権限を修正するか、別の場所を使ってください。管理者権限での実行を常用しないでください。
- セキュリティの記録を確認:「Windows セキュリティ」→「ウイルスと脅威の防止」→「保護の履歴」を開き、起動時刻と一致するブロックの記録がないか確認します。まずファイルの入手元を確認し、セキュリティ機能全体を無効にしないでください。
- アプリケーションのイベントを確認:
Win + Rを押し、eventvwr.mscと入力して、「Windowsログ」→「Application」を開きます。該当時刻の「.NET Runtime」または「Application Error」の記録を探してください。 - 重要な項目を記録:障害が発生したアプリケーションのパス、例外の種類、障害モジュール、発生時刻を控えます。該当する記録だけを切り出し、ログ全体に含まれるサブスクリプションURLまで公開しないようにしてください。
System.UnauthorizedAccessException
原因と対処:プログラムが特定のパスやリソースへのアクセスを拒否されています。例外に記載された実際のパスについて、アクセス権とセキュリティソフトの記録を確認し、書き込み可能なフォルダーに移して再テストしてください。この例外だけでは、インストール先がロックされているとは断定できません。
The process cannot access the file because it is being used by another process.
原因と対処:ファイルが別のプロセスに使用されています。重複して起動したクライアントを終了し、対象フォルダーの同期やバックアップを一時停止してから再試行してください。プログラムの実行中にデータファイルを強制削除しないでください。
一時的に権限を上げると起動できる場合でも、権限の違いを調べる必要があると分かるだけで、問題が解決したわけではありません。通常のユーザーアカウントでフォルダーに書き込めることを確認し、設定の保存、終了、再起動も正常にできるか検証してください。
バックアップを取って設定を切り分け、旧データを上書きしない
更新前は正常で更新後にすぐ終了する場合や、設定の解析・データベースの読み込みに関するエラーが明示されている場合は、「クリーンな環境との比較」を試せます。設定をすぐ削除するのではなく、元のデータを残したまま、新しいデータ環境で同じプログラムが開くか確認します。設定フォルダーはバージョン、パッケージ方式、データパスの設定によって異なります。別バージョンのファイル名を参考にして、まとめて削除しないでください。
-
すべてのプロセスを終了
通知領域からv2rayNを終了し、タスクマネージャーで本体のプロセスが終了したことを確認します。データをバックアップまたは移動する前に関連プロセスを停止し、データベースへの書き込みが続かないようにしてください。
-
元データをバックアップ
ポータブル版を使っている場合は、元のフォルダー全体を先にコピーします。ユーザーフォルダーにデータを別途保存している場合は、そちらもバックアップしてください。サブスクリプションの取得元、手動で追加したノード、ルール、カスタム設定を保存し、バックアップは信頼できるローカルの場所に保管します。
-
テスト用の環境を作成
同じ配布パッケージを新しい書き込み可能なフォルダーに完全に解凍し、古い設定はコピーしません。そのバージョンが共有ユーザーデータフォルダーを使用する場合は、実際のログまたはデータパスの設定を確認し、データも分離してください。プログラムのフォルダーだけを変えても、分離できるとは限りません。
-
設定を一つずつ戻す
新しい環境で開けたら、いったん終了して再起動します。次に、信頼できるサブスクリプションを一つインポートし、最後にルーティングなどの設定を戻してください。設定の種類を一つ戻すごとに動作を確認し、古いデータフォルダー全体をそのまま上書きしないでください。
database disk image is malformed
原因と対処:SQLiteデータベースが破損したときに発生する可能性のあるエラーです。まずデータベースと関連ファイルを保管し、新しいデータ環境を分離して動作を確認してください。使用中のデータベースの隣にあるファイルだけを削除したり、唯一のバックアップを何度も上書きしたりしないでください。
見分け方:古いデータでだけ終了するなら、まず設定を調べる
クリーンな環境では同じプログラムを繰り返し開けるのに、古い設定の一部を戻すと再び終了する場合は、そのデータまたは互換性の問題を優先して調べます。この段階ではランタイムを再インストールしても効果はほとんどありません。問題を再現できる最小限の設定を保つほうが役立ちます。
v2rayNGが開いてすぐ終了する場合の対処とVPN権限の確認
Androidでは、まず終了するタイミングで切り分けます。メイン画面が表示される前に終了する場合は、アプリデータ、インストールパッケージ、システムとの互換性を優先して確認します。メイン画面は安定していて、接続をタップしたときだけ失敗する場合は、VPN権限、既存のVPNサービス、Xrayコアのログを確認してください。VPN権限が拒否された場合は通常、接続を確立できません。権限がないことだけを理由に、あらゆる「起動直後に終了する」現象を説明することはできません。
-
強制停止して再起動
v2rayNGのアイコンを長押しして「アプリ情報」→「強制停止」を選び、もう一度開きます。システムの「設定」→「アプリ」→「v2rayNG」からも操作できます。Androidのバージョンによってメニュー名が多少異なる場合があります。
-
まずキャッシュを消去
「アプリ情報」→「ストレージとキャッシュ」→「キャッシュを削除」を選びます。まずは「ストレージを消去」や「すべてのデータを消去」を選ばないでください。これらは影響が異なり、後者はアプリの設定とローカル設定をリセットします。
-
VPNの競合を確認
システム設定で「VPN」を検索し、ほかのアプリがVPNを接続中か、「常時接続VPN」に設定されていないか確認します。ほかのVPN接続をいったん停止してからv2rayNGに戻って接続し、システムのVPN接続リクエストを確認してください。
-
バックアップ後にリセット
サブスクリプションURLや手動設定を復元できることを確認してから、アプリのストレージ消去を検討してください。アプリを開ける場合は、必要な設定を先にエクスポートします。すでに開けず、バックアップもない場合は、データを失うリスクを検討し、すぐにアンインストールしないでください。
-
インストールパッケージのアーキテクチャを確認
クライアントを入手し直すときは、端末のアーキテクチャに合ったインストールパッケージを選びます。分からない場合は、ダウンロードページにある汎用パッケージの説明を確認してください。システムがインストールをブロックした場合はエラー内容を確認し、署名の不一致、バージョンのダウングレード制限、実行時のクラッシュを同じ問題として扱わないでください。
ウィンドウが開く場合は、コアとポートを別途確認
v2rayNのウィンドウは正常に動作するのに、ログにリッスン失敗が表示される場合は、ローカルポートの競合を確認します。以下の10808はローカルプロキシポートの確認例で、現在の設定と一致するとは限りません。クライアントに表示されている実際の待ち受けポートを確認してください。状態を確認するだけにとどめ、見覚えのないプロセスを終了しないでください。
Get-NetTCPConnection -State Listen -LocalPort 10808 |
Select-Object LocalAddress, LocalPort, OwningProcess
PowerShellでコマンドを実行します。結果のOwningProcessはプロセスIDです。タスクマネージャーの「詳細」タブでPIDを照合してください。結果が表示されない場合、そのポートは現在待ち受けていない可能性があります。クライアントログもあわせて確認します。競合の原因が別のクライアントの起動中のインスタンスであれば、通常の手順で終了してから起動してください。プロキシポートを変更した場合は、そのポートを使うアプリの設定も更新します。
bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
原因と対処:Windowsで待ち受けアドレスまたはポートのバインドが競合しています。エラーに示されたアドレス、ポート、使用中のプロセスを確認し、競合するプログラムを通常の手順で終了するか、空いているポートに変更してからコアを再起動してください。
見分け方:メイン画面が正常なら、まず設定を残す
画面を操作でき、接続操作だけ失敗する場合は、まずログで待ち受け、設定の生成、リモート接続のどこに問題があるかを確認します。ポート確認の代わりにアプリデータをすべて消去しないでください。システムプロキシは通信の入口に影響するだけで、プログラム本体の起動エラーは修復できません。
修復の確認と問い合わせ情報の整理
修復後は、ウィンドウが一度表示されたことだけを完了の基準にしないでください。まずクライアントを終了して再度開き、設定が保存されることを確認します。次に接続を開始して、同じエラーがログに出ないか確認します。最後に、プロキシが必要なアプリから通信を試します。この3段階で確認すれば、画面、コア、アプリのプロキシ接続のどこまで復旧したかを切り分けられます。
- デスクトップでの確認:通常のユーザーとして起動し、機密情報ではない設定を一つ保存します。終了後に再度開き、設定が保持され、エラーが増えていないことを確認してください。
- Androidでの確認:まずアプリを前面に表示した状態でVPN権限を許可して接続し、その後、バックグラウンドへ移動してから戻ったときの状態を確認します。問題が起きた場合は、どの段階で発生したか記録してください。
- 環境情報を整理:OSのバージョン、システムのアーキテクチャ、クライアントの正確なバージョン、インストールパッケージの種類、更新前の動作状況を記録します。ダウンロードした日付からバージョンを推測せず、実際の端末で確認してください。
- 状況を整理:エラーの原文、発生時刻、イベント記録の例外の種類、新しい設定環境での比較結果を用意します。実施済みの操作も記載し、同じ再インストールを繰り返さずに済むようにしてください。
- 認証情報を隠す:サブスクリプションURLのトークン、ノードの識別情報、アカウント情報を伏せてください。設定全体やバックアップの圧縮ファイルを公開しないでください。
基本設定も必要な場合は、サブスクリプションのインポート手順を参照してください。ウィンドウが復旧しても接続できない場合は、接続のトラブル対処をご覧ください。安定して開ける環境を保ち、機能を一つずつ戻すほうが、プログラム、設定、システムプロキシを同時に変更するより原因を特定しやすくなります。