まず確認:落ちているのは画面か、mihomoコアか

Clashをダブルクリックしてもウィンドウが表示されないからといって、必ずしもクラッシュしたとは限りません。「起動後に最小化」の設定が有効で、通知領域にアイコンだけ表示されている場合があります。まずタスクバー右側の上向き矢印をクリックし、次に「タスク マネージャー」→「詳細」でClashのプロセスが動作中か確認してください。ウィンドウが隠れていないことを確かめてから、以下の手順に進みます。

Clashクライアントは、画面、設定管理、プロキシコアなどで構成されています。画面は開いてもmihomoコアの起動に失敗する場合があれば、コアはバックグラウンドで動作していても画面の描画に失敗する場合もあります。対処方法はそれぞれ異なるため、「開かない」というだけで原因を決めつけないでください。

症状最初に確認する項目記録しておく情報
ウィンドウが表示された直後に消えるアプリのクラッシュ記録、設定データの残存障害モジュール、例外コード、発生時刻
画面は真っ白だが、プロセスは動作し続ける画面表示用ランタイム、描画プロセスWebView2を使用しているか、描画エラーがあるか
起動画面から進まない/コアへの接続失敗が表示されるサービスの状態、制御インターフェース、コアのログサービスのエラー、待ち受けアドレス、設定の解析エラー
ウィンドウは正常だが、Webページを開けないシステムプロキシ、ノード、ルール実際のプロキシポート、接続ログ、適用されたルール

手順1:バージョンとWindowsのエラーを記録する(再インストールを繰り返さない)

まず、クライアント名、完全なバージョン番号、Windowsのバージョン、インストーラーのアーキテクチャを記録します。クライアントのバージョンとmihomoコアのバージョンは別の情報で、互いに代用できません。画面を開ける場合は「バージョン情報」などの画面で確認します。開けない場合は、インストーラー名や実行ファイルの「プロパティ」→「詳細」から確認してください。ファイルのプロパティにコアのバージョンが記載されているとは限らないため、見つからない場合はそのまま記録します。

  1. Win + Rを押し、winverを実行して、WindowsのバージョンとOSビルドを記録します。
  2. 「設定」→「システム」→「バージョン情報」を開き、「システムの種類」でx64とARM64のどちらかを確認します。クライアントのリリース情報に従い、適切なビルドを選んでください。
  3. Win + Rを押し、perfmon /relを実行します。信頼性モニターで直近のアプリの障害を探し、「技術的な詳細を表示」を開いてください。
  4. 該当する記録がない場合は、eventvwr.mscを実行し、「Windowsログ」→「アプリケーション」を開いて、起動に失敗した時刻のエラーを確認します。

「障害が発生しているアプリケーション名」「障害が発生しているモジュール名」「例外コード」と発生時刻を記録してください。記録にシステムDLLが含まれていても、そのモジュールを経由してクラッシュしたことを示すだけで、DLLが破損しているとは限りません。見知らぬダウンロードサイトからDLLを個別に入手しないでください。また、ランタイム、サービス、設定を一度に変更すると、どの操作が有効だったのか判断できなくなります。

手順2:画面が真っ白な場合はWebView2が必要か確認する

WebView2は、すべてのClashクライアントが共通して必要とするものではありません。TauriベースのWindowsクライアントでは、通常WebView2を使って画面を表示します。旧版のClash for WindowsはElectronベースで、通常は独自のChromiumを含みます。Flutter製クライアントにもWebView2の対処法をそのまま適用できません。まず利用中のクライアントのプロジェクト説明とインストール時の案内を確認し、ランタイムを修復する必要があるか判断してください。

確認と修復の手順

  1. Windows 11の「設定」→「アプリ」→「インストールされているアプリ」を開き、Microsoft Edge WebView2 Runtimeを検索します。Windows 10では「アプリと機能」を確認してください。一部の環境では「コントロール パネル」→「プログラムと機能」からも確認できます。
  2. クライアントがWebView2を必要としていて、システムにインストールされていない場合は、Microsoft公式のEvergreenランタイムインストーラーを使用してください。オフライン環境では、システムのアーキテクチャに合ったスタンドアロンインストーラーを選びます。
  3. すでにインストールされている場合は、まずWebView2を使用するアプリを終了します。その後、Windowsの「変更」機能、またはインストーラーの修復機能を使ってください。利用できる操作はインストール方法によって異なるため、同じ名前のボタンを無理に探す必要はありません。
  4. インストールまたは修復後、クライアントを再起動します。インストーラーからWindowsの再起動を求められた場合は、次のテストに進む前に再起動してください。

Microsoft Edgeがインストールされていても、クライアントが必要とするWebView2ランタイムが正常とは限りません。一方、画面が真っ白だからといってWebView2の破損とも限りません。描画プロセスの異常、UIキャッシュの破損、セキュリティソフトによるブロックでも、同様の症状が起こることがあります。

ログがグラフィック描画の問題を示している場合は、デバイスメーカーが提供するグラフィックドライバーに更新し、クライアントに「ハードウェアアクセラレーション」の設定があるか確認してください。現在のバージョンのドキュメントで明確にサポートされている場合に限り、該当する設定や起動オプションを使用します。Electron向けのオプションをTauriやFlutterのアプリに追加しないでください。

手順3:TUNをオフにし、サービスと通常のプロキシを分けて確認する

サービスモードは通常、バックグラウンドのコンポーネントを必要な権限で動作させるためのものです。TUNモードは仮想ネットワークアダプターを使って通信を処理する機能であり、両者は別の機能です。サービスをインストールしていてもTUNを有効にする必要はありません。また、通常のシステムプロキシを使うだけなら、画面全体を常に管理者として実行する必要もありません。起動に失敗した場合は、画面、コア、サービス、TUNを分けて確認します。

画面を開ける場合

  1. まずTUNモードをオフにし、通常のプロキシ環境でテストします。設定の名称はクライアントによって異なるため、実際の画面を確認してください。
  2. クライアントを完全に終了してから再起動し、メイン画面を開けるか、設定を読み込めるか、コアのログが表示されるか確認します。
  3. 通常モードで問題がなければ、クライアント内のサービス管理画面でサービスの状態を確認します。サービスのインストールや修復が必要な場合は、Windowsのアクセス許可ダイアログに表示されるプログラムの発行元を確認してください。
  4. サービスが復旧したら、TUNを個別に有効にし、仮想ネットワークアダプターの作成、ルート設定、権限に関するエラーが発生しないか確認します。

サービスへの接続中に止まる場合

Win + Rを押し、services.mscを実行します。サービス名はクライアントによって異なるため、ネット上の手順から名前を推測しないでください。該当するサービスのプロパティを開き、実行ファイルのパスが現在のインストール先を指しているか確認します。ポータブル版のフォルダーを別の場所へ移動した後も、サービスが古いパスを参照している場合があります。クライアントのアンインストール後にサービスが残り、競合の原因になることもあります。

まず、現在のクライアントが提供するサービスの修復または再インストール機能を使用してください。出所のわからないサービス削除コマンドを実行したり、旧クライアントのサービスプログラムを新しいクライアントのフォルダーへコピーしたりしないでください。TUNを有効にした場合だけエラーが発生するなら、同時に動作しているVPN、仮想マシン用ネットワークソフト、ほかのTUNクライアントも記録します。すべてのネットワークアダプターをリセットするのではなく、1つずつ終了して確認してください。

手順4:ポートの競合を調べる(7890だけを変更しない)

ログにaddress already in useやbindエラーがある場合、待ち受けに失敗している可能性があります。7890はプロキシポートの設定例、9090は制御インターフェースの設定例としてよく使われますが、すべてのクライアントで固定されているわけではありません。実際に生成された設定からmixed-port、port、socks-port、external-controllerを確認してください。

たとえば、設定がmixed-port: 7890で、制御インターフェースのアドレスが127.0.0.1:9090の場合、PowerShellで次の2つのTCPポートが待ち受け中か確認できます。

Get-NetTCPConnection -State Listen -LocalPort 7890,9090 -ErrorAction SilentlyContinue |
  Select-Object LocalAddress,LocalPort,OwningProcess

出力のOwningProcessはプロセスIDです。「タスク マネージャー」→「詳細」に表示されるPIDと照合し、プロセスのパスも確認してください。何も出力されない場合は、確認時点でこの2つのTCPポートが待ち受けていないことを示しますが、ほかのポートやUDPの問題は否定できません。ログにUDPの競合が記録されている場合は、実際のポートを指定してGet-NetUDPEndpointで確認してください。

  • 旧クライアントが使用中:旧クライアントを通知領域のメニューから正常に終了し、バックグラウンドサービスも停止しているか確認します。
  • 同じクライアントを複数回起動:該当クライアントのプロセスだと確認できた残存インスタンスを終了してから、1回だけ起動します。
  • 別のプログラムが使用中:用途を確認したうえで、どちらかのポートを変更してください。正体のわからないシステムプロセスは終了しないでください。

プロキシポートを変更した場合は、Windowsのシステムプロキシのアドレスも確認してください。制御インターフェースを変更した場合は、画面が接続するアドレスとコアの設定が一致している必要があります。制御インターフェースにキーが必要な場合は、アドレスが正しくても認証情報が一致しないと「コアへの接続に失敗」と表示されることがあります。調査中も制御インターフェースはローカルからのみ接続できる状態にし、接続のためにすべてのネットワークアダプターへむやみに公開しないでください。

手順5:設定データの残存を切り分け、安全に戻せるバックアップを作る

上書きインストールでは通常、プログラムファイルだけが置き換わり、ユーザーデータは削除されません。そのため、アップデート後に起動直後に落ちる、古い設定に戻した後に画面が真っ白になるといった問題は、残った設定や設定形式の変更に関係している可能性があります。いきなりフォルダー全体を削除するのではなく、バックアップを作成して新しい設定でテストしてください。

データフォルダーの見つけ方

画面を開ける場合は、クライアントに用意された設定フォルダー、データフォルダー、ログフォルダーを開く機能を使います。画面を開けない場合は、エクスプローラーのアドレスバーに%APPDATA%と%LOCALAPPDATA%をそれぞれ入力し、クライアントのドキュメントとフォルダー内のログから該当するデータを確認してください。ポータブルモードでは、プログラムと同じ場所にデータが保存されることもあります。フォルダー名はクライアントやバージョンによって異なります。

  1. クライアントを完全に終了し、該当すると確認できたバックグラウンドサービスも停止します。バックアップ中にファイルが書き込まれないようにしてください。
  2. 該当するデータフォルダーをローカルのバックアップ先へコピーし、サブスクリプション、オーバーライド、ルール、証明書、ログを保管します。
  3. バックアップを開けることを確認したら、元のフォルダー名を変更します。たとえば、フォルダー名の末尾に.backup-20260821を追加してください。すぐに削除しないでください。
  4. クライアントを再起動し、初期状態のデータを作成させます。まずサブスクリプションやオーバーライドを戻さず、画面とコアが安定して起動するか確認してください。
  5. 正常に動作した場合は、サブスクリプションを1つだけインポートし、その後カスタムルール、オーバーライド、TUN設定を1つずつ戻します。変更するたびに動作を確認してください。

「新しいデータでは正常だが、特定の設定を戻すと失敗する」場合は、その設定に原因を絞り込めます。YAMLのインデント誤り、存在しないポリシーグループの参照、現在のコアがサポートしない項目などがあると、コアが設定を読み込めないことがあります。ただし、必ずしも画面がクラッシュするとは限りません。ログを確認して設定の解析失敗とプロセスのクラッシュを区別し、YAMLリファレンスを参照してください。すべての問題をサブスクリプションの失効と決めつけないでください。

手順6:セキュリティ機能によるブロックを確認し、手順を管理して再インストールする

画面の起動後にコアのファイルが見つからないと表示される場合や、再インストールするたびに同じファイルが消える場合は、「Windows セキュリティ」→「ウイルスと脅威の防止」→「保護の履歴」を開きます。ブロックされた時刻、ファイルのパス、検出名を確認してください。ファイルのパスとエラーの発生時刻が一致する必要があります。履歴に警告があるだけで、現在の問題の原因だと判断しないでください。

まず、インストーラーの入手元、発行元、利用中のプロジェクトのシステム要件を確認します。ファイルの信頼性と警告の内容を確認してから、該当するプロジェクトに対して個別の復元操作を検討してください。セキュリティ機能全体を無効にしたり、ダウンロードフォルダー全体を除外対象にしたりすることは避けてください。組織の管理下にあるPCでポリシーの制限がある場合は、管理者に対応を依頼します。

  • 信頼できる公式リリースから、システムのアーキテクチャに合った完全なインストーラーを入手してください。実行ファイルだけをコピーして使うのは避けます。
  • 古いインスタンスが終了していることを確認し、クライアントの案内に従って古いサービスを処理します。前の手順で作成したデータのバックアップは残してください。
  • 安定したローカルパスにインストールし、まず初期設定のデータで起動してから、サブスクリプションを戻します。
  • 特定のアップデート後にだけ問題が再発する場合は、更新前後の完全なバージョン番号を記録し、プロジェクトの案内を確認してロールバックを検討してください。旧バージョンで新バージョンのデータ形式をそのまま上書きしないでください。

旧版のClash for Windowsで発生するElectron画面の問題と、mihomoを使う新しいクライアントのサービス関連の問題は別物です。クライアントを切り替える際、古いデータフォルダー全体をそのままコピーしないでください。サブスクリプション、カスタムルール、オーバーライドを個別に移行し、クライアントの選択にはクライアント比較を参考にしてください。

修復後の動作確認と問題の報告

ウィンドウが表示されるのは最初の確認にすぎません。エラーを一時的に回避しただけではなく問題が解決したか、以下の順に確認してください。

  1. 再起動の確認:通常の手順で終了してから再度起動し、タスク マネージャーでプロセスを何度も終了しなくても、画面とコアの両方が起動することを確認します。
  2. 通常のプロキシの確認:実際のプロキシポートを使ってシステムプロキシをテストし、接続ログと適用されたルールを確認します。ノードの遅延テストに成功しても、アプリの通信がプロキシを経由しているとは限りません。
  3. TUNの確認:必要な場合にのみTUNを有効にし、サービス、仮想ネットワークアダプター、ログを確認します。必要がなければ、TUNをオフにしたまま通常のプロキシを使えます。
  4. 終了時の確認:クライアントを通常の手順で終了し、システムプロキシが想定どおりに元へ戻るか確認します。次回の起動後、待ち受けていないポートにブラウザーが接続しないようにしてください。

問題が解決しない場合は、Windowsのバージョンとアーキテクチャ、クライアントとコアのバージョン、問題の発生時刻、再現手順、サービスとTUNの有効・無効、エラー前後のログの一部、新しいデータフォルダーでのテスト結果を添えて報告してください。バージョン情報があれば開発者がコードの変更点を特定しやすくなり、各項目のテスト結果があれば同じ提案の繰り返しを避けられます。

設定の続きは、サブスクリプションのインポート手順と接続の確認方法をご覧ください。起動トラブルの対応では、常に「一度に変更するのは1項目だけ」を守ります。まず画面を復旧し、次にコア、最後にサービス、TUN、カスタム設定を戻してください。