PMPの流儀

我が家の流儀

我が家で気になったことを夫婦で取り上げていきます

MENU

Windows11 アップデート失敗 8007001F 50016 対策方法

Windows11 対応PCで 22H2 へのアップデート時に失敗する場合の対応策について紹介します。具体的には「 ErrorCode = 0x8007001F, ExCode = 0x50016」という現象です。

1. 現象

アップデート時は以下の順序でインストールします。
(1). アップデートファイルを C ドライブにコピー
(2). PCを自動再起動してアップデート処理

エラーが発生するタイミングは、すべてのコピーが終わり再起動する直前に以下の画面がポンと出て終了です。

これでは、何が原因で失敗したのかさっぱり分かりませんね。そこで Windowsのログを確認します。

C:\Windows\Logs\SetupDiag\SetupDiagResults.xml

実際の例を紹介します。

<?xml version="1.0" encoding="utf-16"?>
<SetupDiag xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://docs.microsoft.com/en-us/windows/deployment/upgrade/setupdiag">
  <Version>1.6.2203.16005</Version>
  <ProfileName>FindAbruptDownlevelFailure</ProfileName>
  <ProfileGuid>55882B1A-DA3E-408A-9076-23B22A0472BD</ProfileGuid>
  <LogErrorLine>2022-10-12 22:19:23, 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: 2022-10-12 22:19:23, 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>
  <SetupPhaseInfo>
    <PhaseName>Finalize</PhaseName>
    <PhaseStartTime>10/12/2022 22:19:19</PhaseStartTime>
    <PhaseEndTime>01/01/0001 00:00:00</PhaseEndTime>
    <PhaseTimeDelta>0:00:00:00.0000000</PhaseTimeDelta>
    <CompletedSuccessfully>false</CompletedSuccessfully>
  </SetupPhaseInfo>
  <SetupOperationInfo>
    <OperationName>Gather data, scope: EVERYTHING</OperationName>
    <OperationStartTime>10/12/2022 22:19:19</OperationStartTime>
    <OperationEndTime>01/01/0001 00:00:00</OperationEndTime>
    <OperationTimeDelta>0:00:00:00.0000000</OperationTimeDelta>
    <CompletedSuccessfully>false</CompletedSuccessfully>
  </SetupOperationInfo>
</SetupDiag>

ここから 「ErrorCode = 0x8007001F, ExCode = 0x50016」というエラーコードがわかります。
このエラーは、過去にユーザーを追加したが、正しく削除していないとレジストリにユーザー情報が残っていた場合発生します。(他にも要因はあるかもしれませんが)

3. 対策

Step1. レジストリエディタを起動

スタートボタンを押してメニューを出してから、

regedit と打ち込み、「管理者として実行」をクリックします。

Step2. ProfileList 内のユーザーを確認

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList を開くと、登録ユーザーが並んでいます。以下の例は 1ユーザーのみ登録されています。

Step3. 有効なユーザーのSIDを確認

ターミナルを開き、WMIC useraccount get name,sid を打ち、Enter キーを押します。

ユーザー名の右側に表示されている、英数文字がSIDです。

Step4. 無効なユーザーをレジストリから削除

Step2とStep3の画面見比べて、SID(S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-XXXX) が一致しないユーザーがないか探します。もし、レジストリ上に未使用ユーザーの残骸が残っていれば削除します。 対象のフォルダで右クリックして削除を選択します。

※注意
「S-1-5-18」など短い名称のものは削除してはだめです。 間違って使用しているユーザーを削除すると、、試していませんが、ログインできなくなる可能性もあるので注意してください。