接続トラブルシューティング · Clash 技術ブログ

Clash Verge Revの起動で約二分待つ:Windowsサービス修復

Windows の起動後、Clash Verge Rev が約二分止まる場合は?まずサービスのスタートアップの種類と状態を調べ、v2.5.8 の修正内容に沿って自動起動に戻します。再起動、TUN、実際の通信を確認し、元に戻せるように進めましょう。

  • Clash Verge Rev
  • Windows
  • v2.5.8
  • システムサービス
  • 起動時の待機
目次

Windows の起動後に Clash Verge Rev を開くと、画面が約二分止まり、その後サービスを使わない通常動作への切り替えが通知される。待っている間にシステムプロキシを切り替えたり、サブスクリプションを更新したりすると、コアが動いていないというエラーも出る。まずサービスのスタートアップの種類を調べ、急いでノードを替えたり、再インストールを繰り返したりしないでください。

起動待ちと通常の接続失敗を分ける

この記事は、Windows 10/11 で Clash Verge Rev のサービス起動を調べるためのものです。公式の問題報告には、サービスが手動に変更されると起動を待ち、その後通常のコアに切り替わる事例があります。v2.5.8 の正式リリース記録には、この問題の修正と修復機能が記載されています。約二分という待ち時間は特定の問題を調べる手掛かりであり、起動が遅い原因がすべて同じとは限りません。

症状から次の確認を選ぶ

確認できた症状最初に確認すること
起動後に長く待たされ、その後サービスを使わない通常動作への切り替えが通知されるclash_verge_service のスタートアップの種類、現在の状態、アプリのログを確認します。
サービスがない、または別のインストール先を指しているサービスのインストール状態とバージョンの互換性を調べます。自動起動に変更するコマンドは、サービスをインストールする操作ではありません。
サービスは正常で、ノードの遅延測定やウェブサイトへの接続だけが失敗するノード、DNS、ルールを別に調べます。サービスのスタートアップの種類を繰り返し変更しないでください。
ログにコアファイルのセキュリティチェック失敗が明記されている該当するセキュリティチェックのガイドに従ってください。スタートアップの種類を変えても、ファイルやアクセス権の問題は解決しません。

サービスの自動起動とアプリの自動起動は別の設定

Clash Verge Rev のシステムサービスは、高い権限でコアの起動を補助し、アプリの画面を通常の権限で動かしたまま TUN を利用できるようにします。パソコン起動時にアプリのウィンドウを表示する設定と、Windows がこのサービスを自動起動する設定は別です。アプリの自動起動をオンにしただけでは、サービスの設定が正しいとは確認できません。

Windows の自動起動、手動起動、無効は、それぞれ異なる設定です。手動に設定されたサービスは、パソコンを起動しただけでは自動的に利用可能になるとは限りません。無効になっているサービスは、そのままでは起動もできません。実際の状態を確認し、アプリのアイコンや一度接続できたことだけで、サービスが復旧したと判断しないでください。

公式の問題報告では、メンテナーが起動最適化ツールによる設定変更の可能性を指摘しています。ただし、すべての端末で同じソフトウェアが原因とは判断できません。更新すれば、ほかのツールによる再変更を防げるという保証もありません。

v2.5.8 の正式版ビルドで専用の通知が出る条件は、サービスが停止中で、スタートアップの種類が自動ではないことです。サービスがすでに動いている場合は、種類が手動でも、その通知がすぐ出るとは判断できません。次回のパソコン起動時に自動で準備が整うかは、別に確認する必要があります。

まずサービスの設定と動作状態を読み取りだけで記録する

変更前の状態を残す

  1. バージョンとログを記録する

    クライアントと Windows の正確なバージョン、起動時のおおよその待ち時間、最後に表示された通知を控えます。最後の一行だけでなく、起動開始からのアプリログを残してください。保存先は、アプリの設定にある「ログディレクトリを開く」から開けます。

  2. 実際のサービスを照会する

    コマンドプロンプトまたは PowerShell で、次の二つの読み取り専用コマンドを実行します。sc.exe と省略せずに入力し、同名の別コマンドとの混同を避けてください。変更するかどうかを決める前に、出力を保存します。

  3. サービスの識別情報と状態を確認する

    START_TYPE、BINARY_PATH_NAME、STATE、PID を確認します。サービス名が clash_verge_service で、パスが現在の信頼できるインストール先を指していることを確かめてください。手動は通常 DEMAND_START、自動は AUTO_START と表示されます。今サービスが動いていても、次回のパソコン起動時に自動起動するとは限りません。

Windows:読み取り専用の照会
sc.exe qc clash_verge_service
sc.exe queryex clash_verge_service

サービスが存在しない、アクセスが拒否された、現在のインストール先とパスが一致しない、といった場合は、まずエラー全体を残します。サービスがない場合は、正しいインストールまたは修復手順が必要です。組織が権限を管理している場合は、既定の管理者の手順に従ってください。推測でサービスのパスを変えたり、サービスを削除したりしないでください。

種類の変更を確認してから自動起動に戻す

まず設定をバックアップし、正式版 v2.5.8 と、そのインストールに対応する現在のサービスコンポーネントが導入されていることを確認します。「Repair service」が表示された場合、主ボタン「Reinstall service」はサービスを再インストールしてからコアを再起動します。完了後も実際の状態を確認してください。古いサービスや安全性を確認できないサービスは、まず正式な配布元の手順で対処し、そのまま有効にしないでください。

以下の手動操作は、v2.5.8 に対応する信頼できるサービスであることを確認し、自動起動への復元が許可されている場合に限ります。配布元やインストール先が正しく見えても、サービスのバージョンと安全性の確認には代えられません。不明な場合は、まずアプリのサービス再インストール機能を使ってください。

手動で自動起動に戻す手順

  1. まずクライアントを終了する

    システムプロキシと TUN のスイッチの元の状態、元々接続できていた方法を先に記録します。その後、設定を保存し、今回のスイッチを一時的にオフにして正常終了してください。修復中は通信が途切れる場合があるため、中断できる時間に行います。複数のバージョンを同時に動かし、サービスのインストールを繰り返さないでください。

  2. 管理者権限でスタートアップの種類を変更する

    管理者としてコマンドプロンプトを開き、最初は次の一つ目のコマンドだけを実行します。start= の後には必ず空白を入れてください。この操作はサービスのスタートアップの種類を変更するもので、サービスを直ちに起動するものではありません。

  3. サービスを起動してからアプリを開き直す

    一つ目が成功したら二つ目を実行し、読み取り専用の照会でもう一度状態を確認します。すでに実行中という通知が出た場合は、まず状態を確認し、その通知だけを理由に変更を繰り返さないでください。その後、通常の方法でクライアントを開きます。

Windows:確認してから行う修復
sc.exe config clash_verge_service start= auto
sc.exe start clash_verge_service

どこかで失敗したら、その場で止め、元のエラーと設定の出力を残します。binpath、サービスのアカウント、アクセス権まで一緒に変更したり、セキュリティソフトを無効にしたりしないでください。サービスのセキュリティチェック、残ったコアプロセス、新旧プロトコルの非互換は、それぞれの方法で原因を確認します。

開き直した後と再起動後の両方を確かめる

修復後の確認事項

  • sc.exe qc の START_TYPE が想定した設定になっており、BINARY_PATH_NAME は修復前に確認した信頼できるパスのままである。
  • sc.exe queryex でサービスが実行中と確認でき、クライアントを開いても、この記事で扱う長い待ち時間や通常動作への切り替え通知が出ない。
  • 必要なシステムプロキシと TUN の元の状態を戻し、アプリログと実際の HTTPS リクエストをそれぞれ確認した。ノードの遅延やスイッチの色だけで判断していない。
  • 都合のよい時間に Windows を再起動してから、種類と状態を再照会した。今回手動で起動した間だけ使えている状態ではないことを確認した。
  • 再起動後に再び手動や無効に戻る場合は、Service Control Manager の関連イベントと時刻を保存し、どのポリシーやツールが書き換えたかを調べる。毎日の再インストールで済ませない。

起動最適化の設定を確認する必要がある場合は、このサービスに関係すると確認できたルールだけを扱い、元の設定を残します。組織の端末では、管理者が許可した方法を使ってください。アプリの自動起動、サービスのスタートアップの種類、TUN を有効にするかどうかは、それぞれ確認し、互いの確認に代えないでください。

直らないときは元に戻し、別の原因を調べる

手動での変更を取り消す場合は、事前に保存した START_TYPE に従って元の種類に戻します。元が手動なら demand、無効なら disabled です。同じ sc.exe config 構文を使い、start= の後の種類だけを入れ替えます。スタートアップの種類を変えても、実行中のサービスは自動で停止しません。これらの種類に戻すと、パソコン起動時にサービスを自動で利用できなくなる場合があります。

サービスを使えるようになるまでは、記録に従って元々接続できていた方法に戻し、TUN が復旧したとは判断しないでください。サービスの無効化や再インストールが必要な場合は、作業を保存してクライアントを終了し、サポートされている手順を使います。試しにサービスを削除したり、実行ファイルのパスを変えたりしないでください。

更新後に互換性問題が起きた場合は、設定のバックアップと現在のログを残し、プロジェクトがサポートする手順で、該当するバージョンとサービスコンポーネントに戻します。データのコピーが一つしかない場合、そのディレクトリを新旧のバージョンで共用しないでください。バージョンを戻しても、外部ツールの起動ポリシーは自動で元に戻りません。既知のセキュリティ問題が未修正のビルドにも戻さないでください。

サービスが自動起動する状態でも失敗する場合は、古いサービスや残ったコアプロセスの有無、実際のパス、エラー全体を記録し、セキュリティチェックまたはコア通信のガイドへ進みます。自動起動に変えるコマンドを、すべてのサービス障害に効く修復方法とは考えないでください。

参考資料