Windows10からWindows11にアップグレードできない場合の対処方法

# はじめに
　Windows10からWindows11にアップグレードする際、アップグレードできずに失敗したので対処方法を紹介する。

# 前提条件
* Windows10 22H2からWindows11 23H2へのアップグレード

# 方法

## エラー内容確認方法

 まず、ログから詳細なエラーの内容を確認する。  
 アップグレードに関するログは、```C:\WINDOWS\Panther\NewOs\Panther```フォルダ以下に格納されている以下の２つのファイルである。

 * setuppack.log
 * setuperr.log

　直接上記ファイルを参照しても良いが、ログ解析できるツール「[SetupDiag.exe](https://learn.microsoft.com/ja-jp/windows/deployment/upgrade/setupdiag)」がMicrosoftから提供されているので、SetupDiag.exeを使って上記ログを解析する。

### SetupDiagログの解析方法

[SetupDiag.exe](https://learn.microsoft.com/ja-jp/windows/deployment/upgrade/setupdiag)を使う。

1. SetupDiag.exeを、以下からダウンロードする  
   * https://go.microsoft.com/fwlink/?linkid=870142
2. ```C:/SetupDiag```などに、SetupDiag.exeをコピーする
3. 管理者権限でコマンドプロンプトを開いてSetupDiag.exeを実行する
    ```powershell
    SetupDiag.exe /Output:<出力ファイルパス> /Format:<フォーマット>
    ```
    例：XMLフォーマットで
    ```powershell
    SetupDiag.exe /Output:C:\SetupDiag\Results.xml /Format:xml
    ```

    * 参考：下記のように引数指定なしだと上手く実行できなかったので、上記の方法を推奨
      ```powershell
      SetupDiag.exe
      ```
4. 上記コマンドで出力されたファイルの中身を確認する
   XML形式の場合、以下のようなエラーが確認できる。```LogErrorLine```にログの概要が記載されるので、確認して対処する。

    ```xml
    <LogErrorLine>2025-01-22 07:22:07, Error SP Operation failed: Gather data, scope: EVERYTHING. Error: 0x8007001F[gle=0x000000b7]</LogErrorLine>
    <FailureData>Error: SetupDiag reports abrupt down-level failure.Last Operation: Gather data, scope: EVERYTHINGError: 0x8007001F - 0x50016</FailureData>
    <FailureData>LogEntry: 2025-01-22 07:22:07, Error SP Operation failed: Gather data, scope: EVERYTHING. Error: 0x8007001F[gle=0x000000b7]</FailureData>
    <FailureData>Refer to "https://docs.microsoft.com/en-us/windows/desktop/Debug/system-error-codes" for error information.</FailureData>
    <FailureDetails>ErrorCode = 0x8007001F, ExCode = 0x50016, LastOperation = Gather data, scope: EVERYTHING</FailureDetails>
    ```


以下は私の環境で起こったエラーとその対策について参考までに記載する。

# エラー内容と対策
## エラー内容

SetupDiag.exeから以下のエラーとなっていた。

```
Error SP Operation failed: Gather data, scope: EVERYTHING. Error: 0x8007001F[gle=0x000000b7]
```
ただ、上記だとエラーの詳細がわからなかったので、エラーログを以下から確認する。

```C:\WINDOWS\Panther\NewOs\Panther/setuperr.log```

```text: C:\WINDOWS\Panther\NewOs\Panther/setuperr.logの抜粋
...
2025-01-21 23:08:24, Error                 SP         pSPRemoveUpgradeRegTree: failed to delete reg tree HKLM\SYSTEM\Setup\Upgrade[gle=0x00000005]
2025-01-21 23:08:36, Error                            MigPlatformStartupOnline caught exception: Win32Exception: Duplicate profile detected for S-1-5-21-2190579883-2944289640-774129622-448449. Abandoning.: 指定されたユーザーには有効なプロファイルがありません。 [0x000004E5] class Mig::CUserContext *__cdecl Mig::COnlineWinNTPlatform::AddUserContext(class Mig::CRegistryDataStore *,class UnBCL::String *,class UnBCL::String *,class UnBCL::String *,class UnBCL::String *,class UnBCL::String *,class UnBCL::Array<class UnBCL::String *> *,int,struct _FILETIME,int,int,int,class UnBCL::String *,class UnBCL::String *)
2025-01-21 23:08:36, Error                 SP         pSPDoMainGather: Engine initialization failed with error: 0x00000004
2025-01-21 23:08:36, Error                 SP         CGatherData: Migration phase failed. Status: 4
2025-01-21 23:08:36, Error                 SP     Operation failed: Gather data, scope: EVERYTHING. Error: 0x8007001F[gle=0x000000b7]
...
```

上記から、```MigPlatformStartupOnline caught exception: Win32Exception: Duplicate profile detected for S-1-5-21-2190579883-2944289640-774129622-448449. Abandoning.: 指定されたユーザーには有効なプロファイルがありません。```とあるので、Windowsのユーザープロファイルが重複しているためエラーとなっているのがわかる。

## 対策

 重複しているユーザープロファイルを、レジストリから削除する。[こちらの記事](https://answers.microsoft.com/en-us/windows/forum/all/getting-windows-11-upgrade-failed-operation-failed/0bea694b-288b-4342-8724-939a6ce06999
)を参考にした。

:::note warn
注意
レジストリを操作するので、最悪Windowsが起動しなくなる可能性がある。重要なデータはバックアップして自己責任で実施すること。
:::

1. Windows + Rキーで、```regedit```と入力して、レジストリエディターを起動する
1. 実行前にレジストリをバックアップしておく  
   「ファイル」-「エクスポート」で任意の場所にバックアップファイルを保存する。詳細は[こちら](https://support.microsoft.com/ja-jp/topic/windows-%E3%81%A7%E3%83%AC%E3%82%B8%E3%82%B9%E3%83%88%E3%83%AA%E3%82%92%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%81%8A%E3%82%88%E3%81%B3%E5%BE%A9%E5%85%83%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-855140ad-e318-2a13-2829-d428a2ab0692)を参照
1. エラーになっていたユーザープロファイルを削除する
  ユーザープロファイルは以下に設定されている。
  ```コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList```
  重複していたユーザを削除する。
  例：S-1-5-21-2190579883-2944289640-774129622-448449の場合
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638977/6e51106b-d4a4-46b7-a923-e545e2095775.png)
  
4. PCを再起動する
5. Windows10の起動を確認し、Windows11へのアップグレードを実施してアップグレードできれば成功


    * https://answers.microsoft.com/en-us/windows/forum/all/getting-windows-11-upgrade-failed-operation-failed/0bea694b-288b-4342-8724-939a6ce06999


# まとめ
　Windows10からWindows11にアップグレードする際、アップグレードできずに失敗したので対処方法を紹介した。エラーログからアップグレードできない原因がわかるのでそこから対策すると良いことがわかった。


# 参考

https://zenn.dev/maiduraaa/articles/539999cb461721

https://learn.microsoft.com/ja-jp/windows/deployment/upgrade/log-files

https://answers.microsoft.com/en-us/windows/forum/all/getting-windows-11-upgrade-failed-operation-failed/0bea694b-288b-4342-8724-939a6ce06999