Skip to content

VSCode起動時における不要なWSL更新プロンプトの完全解決策

問題の詳細

Windows 11 24H2環境でVisual Studio Code(VSCode)を使用している場合、以下の現象が発生することが報告されています:

  • VSCode起動時に不要なターミナルウィンドウが自動的に開く
  • ウィンドウには「Windows Subsystem for Linux must be updated...」というWSL更新プロンプトが表示される
  • 既にWSL拡張機能はアンインストール済み
  • OSレベルでもWSLはインストールされていない(wsl --statusで確認可能)
  • 以下のエラーメッセージが60秒間表示され続ける:
    text
    Windows Subsystem for Linux must be updated to the latest version to proceed. You can update by running 'wsl.exe --update'.
    For more information please visit https://aka.ms/wslinstall
    
    Press any key to install Windows Subsystem for Linux.
    Press CTRL-C or close this window to cancel.
    This prompt will time out in 60 seconds.

この現象はVSCodeバージョン1.93.1で特に報告されており、WSLを過去に使用したことがある環境で発生する可能性が高いです。

重要な認識

プロンプトが表示されるのは、VSCodeが内部的にWSL関連機能を呼び出そうとしていることを示しています。拡張機能をアンインストールしても根本解決にならない場合があります。

根本原因

この現象は典型的な「設定の残留」問題です。主な原因は:

  1. WSL拡張機能のアンインストールが不十分(内部設定ファイルの残存)
  2. WindowsレベルのWSLコンポーネントが完全には無効化されていない
  3. VSCodeのキャッシュや設定ファイルに過去のWSL参照が残存

特にWindowsシステムの深いレベルでWSL機能が有効化されたままになっていることが、プロンプトが出現する主な原因となっています。

効果的な解決手順

ステップ1: Windows機能からWSLを完全無効化

  1. Windows検索(Win + S)で「Windowsの機能の有効化または無効化」と入力
  2. 検索結果から同名の項目を開く
  3. 機能一覧からWindows Subsystem for Linuxを探す
  4. チェックボックスのチェックを外す
  5. OKをクリックして変更を適用

注意点

この操作後には必ずシステム再起動を行ってください。Windows機能レベルの変更は再起動後に完全に反映されます。

ステップ2: VSCodeの残留設定をクリーンアップ

  1. VSCodeを完全に終了
  2. ファイルエクスプローラーで以下のパスを開く:
    %APPDATA%\Code\User\
  3. settings.jsonファイルをテキストエディターで開く
  4. WSL関連の設定パラメーターを検索し削除:
    json
    // 次のような行があれば削除
    "remote.extensionKind": {
      "ms-vscode-remote.remote-wsl": "ui"
    }
  5. ファイルを保存

ステップ3: VSCodeキャッシュのリセット

  1. Ctrl + Shift + Pでコマンドパレットを開く
  2. >Reload Window」と入力して実行
  3. 問題が解消しない場合はVSCodeを完全再インストール:
    powershell
    # 現在の設定をバックアップ
    Copy-Item $env:APPDATA\Code -Destination C:\VSCodeBackup -Recurse
    
    # VSCodeアンインストール
    winget uninstall Microsoft.VisualStudioCode

回避策(代替方法)

上記の根本解決ができない場合の一時的回避策:

  1. タスクスケジューラからの無効化

    powershell
    Get-ScheduledTask -TaskName "*WSL*" | Disable-ScheduledTask
  2. 起動引数による回避(VSCodeショートカット編集):

    "C:\Path\To\Code.exe" --disable-windows-enhancements

予防策とベストプラクティス

  1. 拡張機能のアンインストール手順

    • 単に「アンインストール」をクリックするだけでなく
    • VSCode再起動後にextensionsフォルダーからも削除:
      del %USERPROFILE%\.vscode\extensions\ms-*.wsl-*\ -Recurse -Force
  2. WSL完全削除検証コマンド

    powershell
    # WSLが完全に削除されていることを確認
    if (Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux) {
      "WSL機能が残留しています"
    } else {
      "WSLは完全に無効化されています"
    }
  3. 定期的に設定ファイルを監査:

    bash
    findstr /s /i "wsl" %APPDATA%\Code\**\*

技術的背景

この現象が発生する根本原因は、Windows機能の有効化状態とVSCodeの内部設定管理が独立していることにあります:

  1. Windows機能を有効化するとレジストリキーが設定される
  2. VSCodeは起動時にHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxssをチェック
  3. レジストリエントリが存在すると自動的にWSLセッションを開始しようとする
  4. WSL実行ファイルが存在しない場合、更新プロンプトが表示される

完全解決にはOSレベルとアプリケーションレベルの両方のクリーンアップが必要です。上記の手順を厳密に実行することで、不要なプロンプト表示を永続的に解消することができます。