Windows 11 へのアップグレードや機能更新に失敗したとき、表示されたエラーコードだけでは原因を特定できないことがあります。
例えば、0xC1900101 - 0x20017のようなコードが表示されても、「どのドライバーが原因なのか」までは画面上に表示されない場合があります。
このようなときに利用できるのが SetupDiag です。
SetupDiag は Microsoft が提供している Windows アップグレード専用の診断ツールで、Windows セットアップのログを解析し、失敗したフェーズ、操作、エラーコード、関連するドライバーなどから原因を特定しようとします。
現在サポートされている Windows のセットアップには SetupDiag が含まれているため、まずは Windows が自動的に実行した SetupDiag の結果を確認します。
結果がない場合や、より新しい SetupDiag で再解析したい場合は、Microsoft から最新版をダウンロードして手動で実行します。
SetupDiag とは
SetupDiag は、Windows 11 や Windows 10 のアップグレードが失敗した理由を調べるための診断ツールです。
一般的なトラブルシューティング ツールとは異なり、Windows セットアップが作成したログを解析して、既知の失敗パターンと照合します。
SetupDiag が調べる対象には、例えば次のようなものがあります。
- ドライバーの互換性問題
- 起動時のエラー
- デバイス インストール中の停止
- ディスク領域不足
- Windows 機能やパッケージのインストール失敗
- 移行処理の失敗
- Windows セットアップ自体のエラー
SetupDiag には複数の判定ルールがあり、例えば HardblockDeviceOrDriver、UnsignedDriverBootFailure、BootFailureDetected、DeviceInstallHang、DiskSpaceFailure などのルールが用意されています。
まず自動生成された SetupDiag の結果を確認する
Windows 11 のアップグレードに失敗した場合、Windows セットアップによって SetupDiag が自動実行され、失敗原因の分析結果が保存されることがあります。
まず、エクスプローラーのアドレスバーに次のパスを入力し、Enter キーを押してください。
%WinDir%\Logs\SetupDiag
フォルダーが開いたら、SetupDiagResults.xml があるか確認します。
※このフォルダーは通常の Windows 環境に最初から存在するものではありません。 アップグレードに失敗していても、SetupDiag の自動実行結果が保存されていない場合は、フォルダー自体が存在しないことがあります。
フォルダーや SetupDiagResults.xml が見つからない場合は、「SetupDiag を手動で実行する」へ進んでください。
SetupDiagResults.xml を開く
SetupDiagResults.xml を右クリックし、「プログラムから開く」からメモ帳などを選択します。
XML の内容は一見分かりにくいですが、すべて読む必要はありません。
主に次の項目を確認します。
- ProfileName
- FailureData
- FailureDetails
- Last Setup Phase
- Last Setup Operation
- Error
- DeviceDriverInfo
- Remediation
Last Setup Phase や Last Setup Operation は、独立した XML タグではなく、FailureData などの内容に表示される場合があります。
すべての結果にこれらの項目が表示されるわけではありません。
SetupDiag が一致するルールを見つけた場合は、FailureData や FailureDetails に失敗したフェーズ、操作、エラーコードなどが記録されます。Microsoft の XML 例でも ProfileName、FailureData、FailureDetails などが出力されています。
「Last Setup Phase」と「Last Setup Operation」を確認する
SetupDiag の結果では、次のような情報が表示される場合があります。
Last Phase: Safe OS
Last Operation: Apply Optional Component status
Error: 0x800706ba
Microsoft の SetupDiag の例でも、最後に処理していたフェーズと操作、エラーコードが表示されています。
Last Setup Phase は、Windows セットアップのどの段階まで進んでいたかを示します。
代表的なフェーズは次のとおりです。
| 表示 | 主な段階 |
|---|---|
| Downlevel | 現在使用している Windows 上で準備している段階 |
| Safe OS | 再起動後、更新用の環境で処理している段階 |
| First Boot | 新しい Windows を最初に起動して構成する段階 |
| Second Boot(OOBE Boot) | 初期設定や最終構成へ進む段階 |
フェーズだけで原因を特定することはできませんが、「どの段階で止まったのか」を知る重要な手掛かりになります。
SetupDiag の判定名を見る
SetupDiag の結果では、ProfileName などに判定したルール名が表示される場合があります。
例えば Microsoft が現在公開しているルールには、次のようなものがあります。
| 判定例 | 意味 |
|---|---|
HardblockDeviceOrDriver | 新しい Windows と互換性のないデバイス ドライバーが存在する |
UnsignedDriverBootFailure | 署名されていないドライバーにより起動エラーが発生した |
BootFailureDetected | アップグレード中の起動処理でエラーが発生した |
DeviceInstallHang | デバイス インストール中に停止またはバグチェックが発生した |
DiskSpaceFailure | 再起動後のアップグレード処理中にシステム ドライブの空き領域が不足した |
これらは SetupDiag が Windows セットアップのログから検出する既知の失敗パターンです。
ルール名だけを見るのではなく、その下に表示される FailureData、エラーコード、デバイス名、ドライバー名なども合わせて確認してください。
複数のエラーが表示された場合は最後のエラーに注目する
SetupDiag の結果に複数のエラーが表示される場合があります。
Microsoft は、複数のエラーが検出された場合、
ログ ファイルの最後のエラーが、通常は致命的なエラー
であると説明しています。
そのため、最初に表示されたエラーだけで判断せず、結果の最後まで確認してください。
ただし、最後の行だけを機械的に原因と決めるのではなく、ProfileName、Last Setup Phase、Last Setup Operation、FailureData などを合わせて確認することが重要です。
自動生成された結果がない場合は SetupDiag を手動で実行する
%WinDir%\Logs\SetupDiag フォルダーが存在しない場合や、保存されている結果を最新版の SetupDiag で再分析したい場合は、Microsoft 公式ページから最新版をダウンロードして実行できます。
Microsoft は、SetupDiag を手動で実行する場合は最新バージョンを使用するよう推奨しています。新しいバージョンでは判定ルールの追加や既知の問題の修正が行われる場合があります。
Microsoft:SetupDiag の最新版を入手する から SetupDiag.exe をダウンロードし、分かりやすい場所へ保存してください。
この記事では例として「ダウンロード」フォルダーに保存した場合を説明します。
SetupDiag を管理者権限で実行する
「スタート」ボタンをクリックし、
cmd
と入力します。
「コマンド プロンプト」の「管理者として実行」をクリックしてください。
Microsoft は、SetupDiag を正常に動作させるためには管理者特権のコマンド プロンプトから実行する必要があると説明しています。
次のコマンドで「ダウンロード」フォルダーへ移動します。(「ダウンロード」フォルダーに保存した場合)
cd /d "%USERPROFILE%\Downloads"
続いて、次を実行します。
SetupDiag.exe /Output:"%CD%\SetupDiagResults.log" /ZipLogs:False
解析が完了すると、「ダウンロード」フォルダーに、SetupDiagResults.logが作成されます。
SetupDiag は現在使用している PC 上の Windows セットアップ ログを自動的に探し、オンライン モードで解析します。/Output を指定すると結果の保存場所を指定できます。
SetupDiagResults.log を確認する
「ダウンロード」フォルダーに作成された SetupDiagResults.log をメモ帳で開きます。
例えば Microsoft のサンプルでは、
Error: SetupDiag reports DISM provider failure.
Last Phase: Safe OS
Last Operation: Apply Optional Component status
Error: 0x800706ba
のように、エラーの種類、最後のフェーズ、操作、エラーコードが表示されています。
結果によっては、その下に推奨する対処法が表示される場合もあります。
ドライバー名が表示された場合
SetupDiag の結果に特定のドライバー、デバイス名、.sys ファイルなどが表示された場合は、その情報が重要な手掛かりになります。
まず、そのドライバーがどのデバイスに属しているか確認してください。
PC メーカーやデバイス メーカーの公式サイトから最新版のドライバーを入手し、更新します。
現在使用していないデバイスや古いドライバーであれば、アンインストールしてから Windows 11 のアップグレードを再実行する方法もあります。
ただし、C:\Windows\System32\drivers にある .sys ファイルを直接削除することはおすすめしません。
ドライバーはデバイス マネージャーや正規のアンインストーラーから削除してください。
SetupDiag で原因が特定できない場合
SetupDiag は Windows セットアップのログを既知のルールと照合して原因を特定しようとするツールですが、すべてのアップグレード失敗で原因を特定できるわけではありません。
一致するルールがない場合や、結果から具体的なドライバーを特定できない場合は、Windows セットアップの元ログを確認します。
特に重要なのが、
C:\$WINDOWS.~BT\Sources\Panther
と、
C:\$WINDOWS.~BT\Sources\Rollback
です。
Microsoft は、setupact.log を Windows セットアップの問題を診断する最も重要なログの 1つとして説明しています。
0xC1900101 のようなロールバックを調べる場合は、
%SystemDrive%\$Windows.~BT\Sources\Rollback\setupact.log
が重要です。setuperr.log にはセットアップ中に発生したエラーが記録されます。
ただし、ログにはアップグレード失敗の直接原因ではない警告やエラーも多数記録されます。
そのため、単に Error と書かれた行をすべて原因と判断するのではなく、SetupDiag が示したフェーズ、操作、エラーコードと照らし合わせて確認してください。
0xC1900101 系のエラーでは SetupDiag が特に役立つ
0xC1900101 は Windows アップグレードで発生する一般的なロールバック コードで、Microsoft は多くの場合、ドライバー互換性の問題が原因になると説明しています。
ただし、
0xC1900101 - 0x20017
0xC1900101 - 0x30018
0xC1900101 - 0x40017
など、後半のコードによって失敗したフェーズや操作が異なります。
SetupDiag を使用すると、単に 0xC1900101 というコードだけを見るよりも、実際のセットアップ ログから原因を絞り込める場合があります。
0xC1900101 - 0x20017 が表示されている場合は、次の記事をご覧ください。

まとめ
Windows 11 のアップグレードに失敗した場合は、まず、
%WinDir%\Logs\SetupDiag
を開き、SetupDiagResults.xmlが作成されていないか確認してください。
現在サポートされている Windows のセットアップでは、アップグレードに問題が発生すると SetupDiag が自動的に実行されます。
結果がない場合や、最新版で再解析したい場合は SetupDiag を手動で実行できます。
SetupDiag だけで原因を特定できない場合は、ログを確認して、Windows セットアップが失敗した直前の処理を調べます。

コメント