掲題のエラーが発生したので、解決までに実施した内容を備忘として残しておきます。
実施作業
手っ取り早く解決方法を知りたい人向け
- "regedit"でレジストリエディタを起動して、「HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PackagedCom\ClassIndex\{A9B7A1B9-0671-405C-95F1-E0612CB4CE7E}」を見つけて手動削除する
※レジストリキーの操作はWindowsの挙動に影響を与える可能性があるので、実施される際は自己責任でお願いします。(免責用)
※自分は上記レジストリキーのみ削除しましたが、今のところ動作に影響は出ていません
発生事象
特に特別なことはした記憶はないですが、ある日急にDocker Desktopを起動しようとしたところ以下のエラーが出力されるようになりました。
WSL調査①
エラー内容を見るとWSLが原因っぽいので、PowerShellからWSLが実行できるか確認したところ、そもそもWSLが見つからないとエラーが出ました。
PS C:\Users\xxx.xxx> wsl.exe --list 要素が見つかりません。 Error code: Wsl/ERROR_NOT_FOUND
エラーメッセージで検索すると以下のページがヒットしました。
github.com
ここの記載を見ると管理者権限でターミナルを実行するとWSLが実行できるらしいので試してみたところ、確かにエラーが出ずにリストが表示できることを確認できました。
PS C:\Users\xxx.xxx> wsl.exe --list Linux 用 Windows サブシステム ディストリビューション: Ubuntu (既定)
毎回管理者権限で操作するわけにはいかないので、根本解決できる方法を追加調査してみます。
WSL調査②
同じGitHub issueを読んでいくと以下のコメントを見つけました。
ありがとう。これで我々の仮説が確定しました:古いWSLがインストールされていて、最新のパッケージと競合しているようです。
やってみてくれる?
削除します:HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PackagedCom\ClassIndex\{A9B7A1B9-0671-405C-95F1-E0612CB4CE7E}
これで問題が解決するかどうかを確認する
どうやらレジストリエディタで「HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PackagedCom\ClassIndex\{A9B7A1B9-0671-405C-95F1-E0612CB4CE7E}」を見つけて削除したら良いみたいです。
"regedit"でレジストリエディタを開いて、該当のキーを削除してみます。
※レジストリの取り扱いは特に注意してください
レジストリキーを削除した後に手動でDocker Desktopを起動したところ、今度はエラーが発生せずに起動されました。