当サイトの記事にはプロモーションが含まれています。

Windows11のアップグレードが46%で止まる原因と今すぐ解決できる5つの方法!

パソコンパソコン・スマホ教室
スポンサーリンク

「更新プログラムをチェックしています46%」――この画面、もしかして今まさに2時間以上見つめていませんか? マウスを動かして「あ、まだ46%だ……」と絶望した経験、あなただけじゃありません。世界中のWindowsユーザーが同じ壁にぶち当たっています。

しかも、2025年10月14日にWindows 10のサポートが正式終了し、今はまだWindows 10のままで使い続けている方も、そろそろ本格的にWindows 11へ移行せざるを得ない状況になってきました。そこで立ちはだかるのが、この「46%の壁」です。

この記事を読めば、なぜ46%で止まるのか原因がスッキリわかって、今日中に自分で解決できるようになります。初心者の方でも手順通りに進めれば大丈夫ですし、上級者の方には根本原因から深掘りした技術的な解説もお届けします。

ここがポイント!

  • Windows 11アップグレード中に46%で止まる本当の原因が複数あることを理解できる
  • 「今すぐ実行しない」設定変更から、Windowsサービスの再起動まで具体的な手順がわかる
  • 2026年5月時点の最新情報(Windows 11 25H2での同様事例含む)を踏まえた対処法がわかる
スポンサーリンク
  1. そもそも、46%で止まるのはどんな状況なのか?
  2. Windows11のアップグレードが46%で止まる本当の原因とは?
    1. 原因①Windows Updateサービスのフリーズ
    2. 原因②破損したWindowsUpdateキャッシュ(SoftwareDistributionフォルダ)
    3. 原因③セキュリティソフトやファイアウォールの干渉
    4. 原因④周辺機器やUSB機器の干渉
    5. 原因⑤ディスク容量の不足やシステムファイルの破損
    6. 原因⑥DeliveryOptimizationサービスの異常な通信
    7. 原因⑦Microsoftのセーフガード(互換性ブロック)
  3. 今すぐできる!46%で止まる問題の解決手順5選
    1. 解決策①「今は実行しない」を選んでアップデートチェックをスキップする(最も簡単)
    2. 解決策②Windows Updateサービスを再起動する(フリーズ解除)
    3. 解決策③システムファイルのクリーンアップ後にやり直す
    4. 解決策④SoftwareDistributionフォルダをリセットする(中・上級者向け)
    5. 解決策⑤インターネット接続を切断してオフラインでアップグレードする
  4. より深く知りたい人へログファイルから原因を特定する方法
  5. 2026年現在でも起き続けている!最新バージョンでの46%問題
  6. やりがちなNG行動と予防策
  7. Windowsの中で何が起きているか?46%フリーズの内部構造を解剖する
    1. レジストリレベルで見る「46%フリーズ」の根本構造
  8. 「本当は何が動いているのか」をその場で確認するWindows診断コマンド
  9. PowerShellで一発!アップグレード前の環境チェックと自動修復スクリプト
    1. スクリプト①アップグレード前の環境診断スクリプト(情報収集)
    2. スクリプト②Windows Updateキャッシュ一括リセットスクリプト(設定変更・修復)
    3. スクリプト③SetupDiag自動実行と結果サマリー表示スクリプト(診断)
  10. 知られていない設定の宝庫Windows Updateの動作を制御するポイント
    1. GUIからの設定(Windows 11の場合)
    2. レジストリからの設定(GUIで変えられない場合の迂回ルート)
  11. 現場の「あるある困った」実体験解決集これ、教科書のどこにも書いてなかった
    1. 困った① 「やり直すたびに毎回46%で止まる。何度やっても同じ。」
    2. 困った② 「アップグレード中にウイルス対策ソフトを無効にしたのに、それでも46%で止まる。」
    3. 困った③ 「インターネットを切断してアップグレードしたら、途中で青い画面(BSOD)になった。」
    4. 困った④ 「法人PC50台のアップグレード作業で、10台以上が46%で止まって現場が混乱した。」
    5. 困った⑤ 「ログを見てもどのエラーが「本当の原因」かわからない。エラーだらけで混乱した。」
  12. Windows 11アップグレード関連エラーコード早見表
  13. ぶっちゃけこうした方がいい!
  14. Windows11のアップグレード46%問題に関するよくある質問
    1. 46%で止まって2時間経ちましたが、まだ待つべきですか?
    2. 「今は実行しない」を選ぶと、セキュリティ的に問題はありませんか?
    3. システム要件を満たしていないPCでもこの問題は起きますか?
    4. 解決策をすべて試してもダメな場合はどうすればいいですか?
    5. 25H2への更新でも同じ問題が起きましたが、対処法は同じですか?
  15. 今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
  16. まとめ

そもそも、46%で止まるのはどんな状況なのか?

Windowsのイメージ

Windowsのイメージ

まず状況を整理しましょう。Windows 11へのアップグレードは、いくつかのフェーズに分かれています。問題が発生するのは、インストールの冒頭にある「更新プログラムをダウンロードしています」または「更新プログラムをチェックしています」という画面です。この画面でパーセンテージが46%を指したまま、まるで時間が止まったかのように動かなくなります。

「もう少し待てば進むのでは?」と思うかもしれません。実際に15分、30分、1時間……と待ち続けるユーザーは後を絶ちません。しかし、この状態は単純な処理の遅延ではなく、Windowsのアップグレードプロセス自体がどこかで詰まっているサインである場合がほとんどです。筆者の調査でも、2時間以上待っても変化がなかった事例が多数報告されています。

重要なポイントとして覚えておいてほしいのは、これはWindows 10からWindows 11への移行に限った話ではないということです。2025年後半からはWindows 11の23H2・24H2・25H2といったバージョンアップでも、まったく同じ場所で止まる現象が世界中で多発しています。マイクロソフトのQ&Aフォーラムには、2026年になっても同じ質問が相次いで投稿されています。つまり、この問題は「古いPCの話」ではなく、最新のWindows環境でも起きている現在進行形のトラブルなのです。

Windows11のアップグレードが46%で止まる本当の原因とは?

「なんで46%なの?」という疑問を持った方は鋭いです。この数字には意味があります。Windowsのセットアッププログラムは、インストール開始前にまずMicrosoftのサーバーに接続して最新の累積アップデートやドライバーを取得しようとします。この「オンラインアップデートの確認処理」が全体の46%付近に相当するとされており、まさにここでプロセスが止まりやすいのです。

では、なぜこの処理が止まるのでしょうか?原因は一つではありません。複数の要因が絡み合っています。

原因①Windows Updateサービスのフリーズ

最も多い原因が、Windowsのバックグラウンドで動いている「Windows Updateサービス(wuauserv)」や「Windows Installerサービス(msiserver)」が応答しなくなることです。特に、過去に途中で中断されたアップデートが残っていたり、アップデートキャッシュが壊れていたりすると、新しいアップグレードを開始したときにこのサービスが固まります。

海外の技術者向けサイトによると、タスクマネージャーからこのサービスを再起動するだけで、多くのケースで46%の壁を突破できると報告されています。あとで手順を詳しく説明しますね。

原因②破損したWindowsUpdateキャッシュ(SoftwareDistributionフォルダ)

Windowsは更新プログラムのダウンロード済みデータを「SoftwareDistribution」というフォルダに一時保存しています。このフォルダ内のデータが何らかの理由で壊れていると、新しいアップグレードを始めても正常に進めません。特に、以前にアップグレードを途中でキャンセルしたことがある場合は、このキャッシュが汚染状態になっている可能性がとても高いです。

原因③セキュリティソフトやファイアウォールの干渉

ウイルス対策ソフトやサードパーティ製のファイアウォールは、Windowsの更新プログラム取得処理を「不審な通信」とみなしてブロックまたは遅延させることがあります。特に、企業向けのセキュリティ製品や、古いバージョンのウイルス対策ソフトでこの問題が出やすいとされています。アップグレードの前には、これらを一時的に無効化しておくことが推奨されています。

原因④周辺機器やUSB機器の干渉

意外に思えるかもしれませんが、USBメモリ、外付けHDD、プリンター、Bluetoothドングルなどの周辺機器がインストールプロセスに干渉して処理を止めることがあります。これはWindows 11の24H2以降のアップデートで特に多く報告されており、マイクロソフトも「アップグレード時は不要な周辺機器を外してください」と公式に案内しています。プリンターは特にバックグラウンドでソフトウェアが動いているため要注意です。

原因⑤ディスク容量の不足やシステムファイルの破損

Windows 11のアップグレードには最低でもCドライブに20GB以上の空き容量が必要です。容量が足りないと、処理の途中でアップグレードが止まります。また、既存のWindowsシステムファイルに破損がある場合も、セットアッププログラムがそこでつまずきます。この場合、コマンドを使ったシステムファイルの修復が必要になります。

原因⑥DeliveryOptimizationサービスの異常な通信

これはやや上級者向けの話ですが、マイクロソフトのQ&Aに興味深い報告が掲載されています。「DoSvc(配信の最適化)」というサービスが、通常100MB/s以上出るはずのネットワーク回線を128KB/sしか使わない状態で長時間通信し続けているというケースです。このサービスはPtoPネットワーク経由で更新ファイルを取得しようとするのですが、このプロセスが詰まると46%付近でいつまでも止まり続けます。ネットワーク接続を一時的に切断してオフラインでアップグレードを進めると、この問題を回避できます。

原因⑦Microsoftのセーフガード(互換性ブロック)

お使いのPCの構成がWindows 11と相性が悪い場合や、特定のドライバーやチップセットに既知の不具合がある場合、Microsoftが意図的にアップグレードをブロックする「セーフガード」が発動している可能性があります。この場合、Windows Update経由のアップグレードは通りませんが、インストールアシスタントやISOファイルを使った手動アップグレードなら突破できることがあります。

今すぐできる!46%で止まる問題の解決手順5選

原因がわかったところで、実際の解決方法を優先度の高い順に紹介します。まず最もシンプルな方法から試して、それでもダメなら次の方法へ進んでください。

解決策①「今は実行しない」を選んでアップデートチェックをスキップする(最も簡単)

これがもっとも手軽で、多くのユーザーが成功しています。アップグレード開始時の最初の画面で、「Windowsセットアップでの更新プログラムのダウンロード方法の変更」というリンクをクリックし、「今は実行しない」を選択してから「次へ」を押す方法です。

  1. Windows 11のインストーラー(ISOファイルのSetup.exeまたはインストールアシスタント)を起動する
  2. 最初の画面で「次へ」を押す前に、「Windowsセットアップでの更新プログラムのダウンロード方法の変更」というリンク文字をクリックする
  3. 「今は実行しない」を選んで「次へ」を押す
  4. そのまま画面の指示に従ってアップグレードを進める

この操作により、インストール前の更新プログラムチェックが完全にスキップされます。「更新しないで大丈夫なの?」と不安になるかもしれませんが、安心してください。Windows 11へのアップグレードが完了したあと、インターネット接続を確立すれば、必要な更新プログラムやドライバーは自動的にダウンロードされます。アップグレード前に更新するか、後に更新するかの違いだけです。

解決策②Windows Updateサービスを再起動する(フリーズ解除)

すでに46%で止まっている状態のときに試せる方法です。アップグレードの画面はそのままにしておいて、バックグラウンドのサービスを再起動します。

  1. Ctrl + Shift + Esc

    を押してタスクマネージャーを開く

  2. 「サービス」タブをクリックする
  3. 「wuauserv」(Windows Update)を探して右クリックし、「開始」または「再起動」を選ぶ
  4. 同じく「msiserver」(Windows Installer)も探して同様に「開始」または「再起動」を選ぶ
  5. そのまま5〜10分待つ

このサービス再起動によってWindowsのアップデート処理が再初期化され、詰まっていた処理が動き出すことがあります。海外の技術情報によれば、この方法で多くのユーザーが46%の壁を突破しています。

解決策③システムファイルのクリーンアップ後にやり直す

一度46%で止まってしまい、強制キャンセルした場合は、必ずこのクリーンアップを行ってから再試行してください。クリーンアップなしでやり直しても、同じ場所でまた止まる可能性が高いです。

  1. Cドライブを右クリックして「プロパティ」を開き、「ディスクのクリーンアップ」をクリックする
  2. 「システムファイルのクリーンアップ」ボタンをクリックする
  3. 「一時Windowsインストールファイル」と「Windows Updateのクリーンアップ」にチェックを入れてOKを押す
  4. クリーンアップ完了後、必ずPCを再起動する(再起動しないとクリーンアップが完全に反映されません)
  5. 再起動後、解決策①の手順で「今は実行しない」を選択してアップグレードを再試行する

解決策④SoftwareDistributionフォルダをリセットする(中・上級者向け)

Windowsの更新キャッシュが壊れている場合は、コマンドプロンプトからフォルダをリセットする方法が有効です。

  1. スタートメニューで「コマンドプロンプト」を右クリックして「管理者として実行」を選ぶ
  2. net stop wuauserv

    と入力してEnterを押す

  3. net stop bits

    と入力してEnterを押す

  4. net stop cryptsvc

    と入力してEnterを押す

  5. エクスプローラーで
    C:\Windows\SoftwareDistribution

    フォルダを開き、中のファイルとフォルダをすべて削除する

  6. コマンドプロンプトに戻り
    net start wuauserv

    net start bits

    net start cryptsvc

    を順番に実行する

  7. PCを再起動してアップグレードを再試行する

解決策⑤インターネット接続を切断してオフラインでアップグレードする

上記の方法をすべて試してもダメな場合の最終手段です。アップグレード中、LANケーブルを抜くかWi-Fiをオフにした状態でSetup.exeを起動し、更新プログラムのチェックを求められたら「今は実行しない」を選択します。インターネットに接続していない状態にすることで、Microsoftのサーバーへの通信自体が発生しなくなり、46%問題を根本からスキップできます。アップグレード完了後にインターネットを再接続すれば、ライセンス認証や後続の更新も正常に行われます。

より深く知りたい人へログファイルから原因を特定する方法

「どうしても解決できない」「エラーの詳細を知りたい」という方には、Windowsのログファイルを確認する方法があります。これは少し技術的な内容になりますが、根本原因を特定するうえで非常に役立ちます。

アップグレード中にWindowsは以下の場所に詳細なログを書き出しています。

ここがポイント!

  • C:\$WINDOWS.~BT\Sources\Panther\setupact.log

    セットアップのアクティビティ全体のログ

  • C:\Windows\Panther\UnattendGC\setupact.log

    アップグレード処理の詳細ログ

  • C:\Windows\Logs\CBS\CBS.log

    コンポーネントベースサービスのログ

これらのファイルをメモ帳で開き、「Error」や「Failed」というキーワードで検索すると、どこで何が失敗したのかがわかります。エラーコードが見つかったら、そのコードをマイクロソフトの公式サポートや検索エンジンで調べることで、より具体的な解決策が見つかることがあります。

また、上級者向けのツールとして「SetupDiag」というマイクロソフト公式の診断ツールがあります。これを実行すると、アップグレード失敗の原因を自動的に分析してレポートを出力してくれます。手作業でログを読む手間を省けるので、エンジニアの方やIT管理者にはとても便利です。

2026年現在でも起き続けている!最新バージョンでの46%問題

「これってWindows 10からWindows 11への古い話でしょ?」と思っている方、そうではありません。2025年に公開されたWindows 11 25H2への更新でも、まったく同じ46%問題が世界中で報告されています。マイクロソフトの公式Q&Aフォーラムには2025年10月以降、25H2のアップグレードで46%に止まったという投稿が相次いでいます。

2026年2月の投稿でも「25H2からのアップデートが46%でフリーズする」という報告があり、解決策として提示されているのはやはり「セットアップで更新プログラムをスキップして進める」方法です。つまり、マイクロソフトは長年この問題を根本解決していないと言えます。

ちなみに、2026年6月にはWindowsのセキュアブート証明書の有効期限切れという問題も控えています。これに関連してWindows 11への移行を急いでいる方も多いと思いますが、まさにそういった方がこの46%問題にぶつかっているケースが増えています。本記事の手順を参考に、焦らず確実にアップグレードを進めましょう。

やりがちなNG行動と予防策

46%で止まったときにやってはいけないNG行動があります。知らずにやってしまうと状況を悪化させる可能性があるので注意してください。

まず、電源ボタンで強制シャットダウンすることは絶対に避けてください。アップグレードの途中でいきなり電源を落とすと、Windowsのインストールファイルや既存のシステムファイルが破損することがあります。最悪の場合、Windowsが起動しなくなったり、ブラックアウトしたりという深刻なトラブルに発展します。止めたいときは必ず、セットアップ画面の「×」ボタンでキャンセルし、クリーンアップが完了するまで待ってください(クリーンアップ自体も時間がかかる場合があります)。

次に、何も対処しないまま何度もやり直すことも避けましょう。キャッシュが残ったままやり直しても、毎回同じ場所で止まります。前述のシステムファイルクリーンアップを必ず挟んでください。

予防策としては、アップグレード前に以下を確認しておくことをお勧めします。Cドライブに20GB以上の空き容量があること、不要な周辺機器(USBメモリ、外付けHDD、プリンターなど)をすべて取り外しておくこと、サードパーティ製のウイルス対策ソフトを一時無効化しておくこと、そしてアップグレード前に大切なデータをバックアップしておくことです。特にバックアップは何があっても最優先で行ってください。アップグレードの失敗でデータが消えてしまっても、バックアップがあれば安心です。

Windowsの中で何が起きているか?46%フリーズの内部構造を解剖する

Windowsのイメージ

Windowsのイメージ

このセクションを読むと、「なぜ46%という数字で止まるのか」をWindowsの内部動作レベルで理解でき、対処法を選ぶ判断軸が手に入ります。

ぶっちゃけた話、「46%で止まる」という現象を表面だけ見て対処しようとすると、毎回同じ罠にはまります。何が起きているかを構造から理解しておかないと、「クリーンアップしてやり直したらまた46%で止まった」という無限ループにはまるんですよね。15年以上IT管理をやってきた現場感覚から言うと、「症状」だけを追いかけて「原因」を見ない対処は時間の無駄になりやすいです。

Windowsのアップグレードセットアップは、大きく分けて「ダウンレベル段階(現行OS上での処理)」「セーフOS段階(WinPEで動く段階)」「ファースト/セカンドブート段階」という4つのフェーズを経ます。問題の46%は、そのうちのダウンレベル段階の序盤、特に「オンライン更新確認処理」に当たります。

この46%の区間で、Windowsのセットアッププログラムは裏で以下のことを並行して実行しています。まずWindows Updateサービス(wuauserv)を呼び出してMicrosoftのサーバーに最新の累積アップデートを問い合わせます。次に配信最適化サービス(DoSvc)がP2Pネットワーク経由でダウンロード元を探索し始めます。さらにBITSサービス(Background Intelligent Transfer Service)がバックグラウンドで低優先度でファイルを転送しようとします。これらのサービスがお互いに依存しながら非同期で動いている状態のため、どれか一つがハングアップするとパーセンテージが動かなくなるのです。

公式ドキュメントには書いてないんですが、この処理が詰まる一番多いパターンは「wuauservが応答待ち状態(WAITING)のまま抜け出せなくなる」ケースです。タスクマネージャーで「wuauserv」を探すと、サービスの状態が「実行中」と表示されていても、実際にはスレッドがデッドロックしているという厄介な状態になっていることがあります。これは「動いているように見えて動いていない」という、初心者が「まだ処理中かも?」と誤認しやすい罠です。

レジストリレベルで見る「46%フリーズ」の根本構造

さらに深く掘り下げると、Windowsはアップグレード処理の状態を

HKLM\SYSTEM\Setup\MoSetup\Volatile

というレジストリキーに記録しています。このキーの中に「SetupPhase」という値があり、ここに現在の処理フェーズが書き込まれます。

過去のアップグレードが不完全な状態で終わった場合、このレジストリに古いフェーズ情報が残ったままになることがあります。新しいアップグレードを開始すると、セットアッププログラムはこの古い情報を参照して「以前の続き」から再開しようとし、存在しないファイルや整合性の取れないデータに当たってフリーズします。これが「何回やり直しても同じ46%で止まる」の本当の原因の一つです。

Windows 10とWindows 11ではこの挙動に差があります。Windows 10(22H2以前)の場合、このレジストリキーの後始末が不完全なまま残ることが多く、特にWindows 10からWindows 11へのアップグレードで顕著です。Windows 11(23H2以降)では、Setup自体の改善によりこの古いキーのクリーンアップが自動化されていますが、それでも今なお同じ問題が報告されているということは、自動クリーンアップが機能しないエッジケースが存在することを示しています。

「本当は何が動いているのか」をその場で確認するWindows診断コマンド

このセクションを読むと、46%で止まっている最中にWindowsの内部状態をリアルタイムで確認するコマンドが使えるようになります。「待つべきか、止めるべきか」の判断を勘ではなく数字でできるようになります。

「これ、誰も教えてくれないんですけど」という情報として、46%で止まっているときにタスクマネージャーだけ見ていても何もわかりません。本当に確認すべきはサービスの状態とネットワークI/Oです。以下のコマンドがそれを一発で教えてくれます。

なお以下のコマンドは、PowerShellではなくコマンドプロンプトを使います。理由は、アップグレード処理中はPowerShellの実行ポリシーが意図せず制限されている場合があり、cmdコマンドの方が確実に動くからです。また

sc

コマンドはサービスコントロールマネージャーへの低レベルアクセスに適しており、PowerShellのGet-Serviceより詳細な状態(PID、STATE詳細)を返します。

★管理者権限必要

:: Windows Updateサービスの詳細状態を確認する(46%で止まっている最中に使う)
sc queryex wuauserv

:: BITSサービスの詳細状態を確認する
sc queryex bits

:: 配信最適化サービスの状態を確認する
sc queryex dosvc

:: ネットワーク接続の状態を確認する(通信量がゼロに近い場合はフリーズ確定)
netstat -b | findstr /i "wuauserv svchost dosvc"

sc queryex wuauserv

を実行したとき、STATE: 4 RUNNINGと表示されていても安心は禁物です。WIN32_EXIT_CODE: 0かつSERVICE_EXIT_CODE: 0であればまだ生きている可能性がありますが、WIN32_EXIT_CODE: 1077(サービスが前回正常起動していない)が出ていたら、そのサービスは名目上は動いているだけで機能不全です。この場合は迷わずキャンセルして再起動してください。

PowerShellで一発!アップグレード前の環境チェックと自動修復スクリプト

このセクションを読むと、コピペするだけでアップグレード前の環境を自動診断し、46%フリーズの原因になりやすい問題を事前に検出・修復するスクリプトが手に入ります。

スクリプト①アップグレード前の環境診断スクリプト(情報収集)

# ========================================
# スクリプト名Win11UpgradePreCheck.ps1
# 用途Windows 11アップグレード前の環境問題を自動診断する
# 動作確認済みWindows 10 22H2 / Windows 11 23H2・24H2・25H2
# PowerShellバージョン5.1以上
# 実行権限管理者権限必要
# 注意事項このスクリプトは情報収集のみで設定変更は行いません
# ========================================

#-- 管理者権限チェック --
if (-not ::GetCurrent()).IsInRole"Administrator")) {
Write-Warning "このスクリプトは管理者権限で実行してください。"
exit 1
}

Write-Host "=== Windows 11 アップグレード前診断レポート ===" -ForegroundColor Cyan
Write-Host "実行日時: $(Get-Date -Format 'yyyy/MM/dd HH:mm:ss')" -ForegroundColor Gray

#-- Cドライブの空き容量確認(20GB以上が必要)--
try {
$drive = Get-PSDrive -Name C
$freeGB = ::Round($drive.Free / 1GB, 2)
$status = if ($freeGB -ge 20) { "OK" } else { "警告不足" }
$color = if ($freeGB -ge 20) { "Green" } else { "Red" }
Write-Host "`n ${freeGB}GB $status" -ForegroundColor $color
} catch {
Write-Warning "ディスク容量の取得に失敗しました: $_"
}

#-- 重要なWindowsサービスの状態確認 --
Write-Host "`n" -ForegroundColor Cyan
$services = @(
@{Name="wuauserv"; Desc="Windows Update"},
@{Name="bits"; Desc="BITS(バックグラウンド転送)"},
@{Name="dosvc"; Desc="配信最適化"},
@{Name="cryptsvc"; Desc="Cryptographic Services"},
@{Name="msiserver";Desc="Windows Installer"}
)
foreach ($svc in $services) {
try {
$s = Get-Service -Name $svc.Name -ErrorAction Stop
$color = if ($s.Status -eq "Running") { "Green" } else { "Yellow" }
Write-Host " $($svc.Desc) : $($s.Status)" -ForegroundColor $color
} catch {
Write-Host " $($svc.Desc) : 見つかりません(要注意)" -ForegroundColor Red
}
}

#-- SoftwareDistributionフォルダのサイズ確認 --
try {
$sdPath = "$env:SystemRoot\SoftwareDistribution"
$sdSize = ::Round((Get-ChildItem $sdPath -Recurse -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum / 1MB, 1)
$sdColor = if ($sdSize -gt 2000) { "Yellow" } else { "Green" }
Write-Host "`n ${sdSize}MB" -ForegroundColor $sdColor
if ($sdSize -gt 2000) {
Write-Host " → 2GB超えのキャッシュが蓄積しています。クリーンアップを推奨します。" -ForegroundColor Yellow
}
} catch {
Write-Warning "SoftwareDistributionフォルダのサイズ取得に失敗: $_"
}

#-- サードパーティ製ウイルス対策ソフトの確認 --
try {
$avList = Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct -ErrorAction SilentlyContinue |
Where-Object { $_.displayName -notmatch "Windows Defender" } |
Select-Object -ExpandProperty displayName
Write-Host "`n" -ForegroundColor Cyan
if ($avList) {
foreach ($av in $avList) {
Write-Host " 検出: $av (アップグレード前に無効化を推奨)" -ForegroundColor Yellow
}
} else {
Write-Host " なし(Windowsセキュリティのみ)" -ForegroundColor Green
}
} catch {
Write-Warning "ウイルス対策ソフトの確認に失敗: $_"
}

#-- 接続されているUSBデバイスの確認 --
try {
$usbDevices = Get-PnpDevice -Class USB -Status OK -ErrorAction SilentlyContinue |
Where-Object { $_.FriendlyName -notmatch "Root Hub|Composite Device|Generic" }
Write-Host "`n" -ForegroundColor Cyan
if ($usbDevices) {
foreach ($dev in $usbDevices) {
Write-Host " 接続中: $($dev.FriendlyName) (アップグレード前に取り外し推奨)" -ForegroundColor Yellow
}
} else {
Write-Host " 問題になりそうなデバイスは検出されませんでした" -ForegroundColor Green
}
} catch {
Write-Warning "USBデバイスの確認に失敗: $_"
}

Write-Host "`n=== 診断完了 ===" -ForegroundColor Cyan
Write-Host "警告(黄)や要注意(赤)の項目を解消してからアップグレードを実施してください。`n" -ForegroundColor White

スクリプト②Windows Updateキャッシュ一括リセットスクリプト(設定変更・修復)

# ========================================
# スクリプト名ResetWindowsUpdateCache.ps1
# 用途46%フリーズの原因になるWindowsUpdateキャッシュを安全にリセットする
# 動作確認済みWindows 10 22H2 / Windows 11 23H2・24H2・25H2
# PowerShellバージョン5.1以上
# 実行権限管理者権限必要
# 注意事項実行後PCの再起動が必要です。再起動前にすべての作業を保存してください
# ========================================

#-- 管理者権限チェック --
if (-not ::GetCurrent()).IsInRole"Administrator")) {
Write-Warning "このスクリプトは管理者権限で実行してください。"
exit 1
}

#-- 対象サービスの定義 --
$targetServices = @("wuauserv", "bits", "cryptsvc", "msiserver")

Write-Host "=== Windows Updateキャッシュ リセット開始 ===" -ForegroundColor Cyan

#-- ステップ1対象サービスを停止する --
Write-Host "`n サービスを停止しています..." -ForegroundColor Yellow
foreach ($svcName in $targetServices) {
try {
$svc = Get-Service -Name $svcName -ErrorAction SilentlyContinue
if ($svc -and $svc.Status -eq "Running") {
Stop-Service -Name $svcName -Force -ErrorAction Stop
Write-Host " 停止: $svcName" -ForegroundColor Green
} else {
Write-Host " スキップ(既に停止中): $svcName" -ForegroundColor Gray
}
} catch {
Write-Warning " $svcName の停止に失敗しました: $_"
}
}

Start-Sleep -Seconds 3

#-- ステップ2SoftwareDistributionフォルダの中身を削除 --
Write-Host "`n Updateキャッシュを削除しています..." -ForegroundColor Yellow
$sdPath = "$env:SystemRoot\SoftwareDistribution"
try {
if (Test-Path $sdPath) {
Get-ChildItem -Path $sdPath -Recurse -Force -ErrorAction SilentlyContinue |
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
Write-Host " SoftwareDistributionの中身を削除しました" -ForegroundColor Green
}
} catch {
Write-Warning " SoftwareDistributionの削除に失敗しました: $_"
}

#-- ステップ3catroot2フォルダの中身を削除(証明書キャッシュのリセット)--
$cr2Path = "$env:SystemRoot\System32\catroot2"
try {
if (Test-Path $cr2Path) {
Get-ChildItem -Path $cr2Path -Recurse -Force -ErrorAction SilentlyContinue |
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
Write-Host " catroot2の中身を削除しました" -ForegroundColor Green
}
} catch {
Write-Warning " catroot2の削除に失敗しました: $_"
}

#-- ステップ4停止したサービスを再起動 --
Write-Host "`n サービスを再起動しています..." -ForegroundColor Yellow
foreach ($svcName in $targetServices) {
try {
Start-Service -Name $svcName -ErrorAction Stop
Write-Host " 起動: $svcName" -ForegroundColor Green
} catch {
Write-Warning " $svcName の起動に失敗しました: $_"
}
}

Write-Host "`n 完了しました。PCを再起動してからアップグレードを再試行してください。" -ForegroundColor Cyan
Write-Host "=== リセット処理完了 ===" -ForegroundColor Cyan

スクリプト③SetupDiag自動実行と結果サマリー表示スクリプト(診断)

# ========================================
# スクリプト名RunSetupDiag.ps1
# 用途アップグレード失敗後にSetupDiagを自動実行して原因を日本語でサマリー表示する
# 動作確認済みWindows 10 22H2 / Windows 11 23H2・24H2・25H2
# PowerShellバージョン5.1以上
# 実行権限管理者権限必要
# 注意事項インターネット接続が必要です(SetupDiag.exeのダウンロード用)
# ========================================

#-- 管理者権限チェック --
if (-not ::GetCurrent()).IsInRole"Administrator")) {
Write-Warning "このスクリプトは管理者権限で実行してください。"
exit 1
}

$diagFolder = "C:\SetupDiag"
$diagExe = "$diagFolder\SetupDiag.exe"
$resultLog = "$diagFolder\Results.log"

#-- 出力フォルダの作成 --
if (-not (Test-Path $diagFolder)) {
New-Item -ItemType Directory -Path $diagFolder | Out-Null
}

#-- SetupDiagがすでに存在しているか確認し、なければダウンロード --
if (-not (Test-Path $diagExe)) {
Write-Host "SetupDiag.exeをダウンロードしています..." -ForegroundColor Yellow
try {
$downloadUrl = "https://go.microsoft.com/fwlink/?linkid=870142"
Invoke-WebRequest -Uri $downloadUrl -OutFile $diagExe -UseBasicParsing -ErrorAction Stop
Write-Host "ダウンロード完了" -ForegroundColor Green
} catch {
Write-Warning "ダウンロードに失敗しました。手動でSetupDiag.exeをダウンロードして $diagFolder に配置してください。"
exit 1
}
}

#-- SetupDiagを実行 --
Write-Host "`nSetupDiagを実行しています(数十秒かかります)..." -ForegroundColor Yellow
try {
Start-Process -FilePath $diagExe -ArgumentList "/Output:$resultLog" -Wait -NoNewWindow -ErrorAction Stop
Write-Host "実行完了" -ForegroundColor Green
} catch {
Write-Warning "SetupDiagの実行に失敗しました: $_"
exit 1
}

#-- 結果ファイルの読み込みとサマリー表示 --
if (Test-Path $resultLog) {
$content = Get-Content $resultLog -Raw -Encoding UTF8
Write-Host "`n=== SetupDiag 結果サマリー ===" -ForegroundColor Cyan

#-- エラーコードの抽出と日本語ヒントの表示 --
$errorHints = @{
"0xC1900209" = "互換性スキャン失敗互換性のないソフトウェアまたはドライバーが検出されました。ウイルス対策ソフトやゲームのチートソフトを削除・更新してください。"
"0xC1900101" = "ドライバーエラー互換性のないドライバーがアップグレードをブロックしています。デバイスマネージャーから問題のあるドライバーを更新または削除してください。"
"0x80070002" = "ファイルが見つかりませんドライバーパッケージに必要なファイルが欠落しています。該当ドライバーをメーカーサイトから再インストールしてください。"
"0x800F0922" = "ネットワークエラーシステムパーティションの空き容量不足またはネットワーク接続の問題です。Cドライブを20GB以上確保してください。"
"0xC1900200" = "システム要件未達このPCはWindows 11の最小要件を満たしていません。"
"HardblockDeviceOrDriver" = "ハードブロック特定のデバイスまたはドライバーがアップグレードを強制ブロックしています。"
}

$foundAny = $false
foreach ($code in $errorHints.Keys) {
if ($content -match $code) {
Write-Host "`n $code" -ForegroundColor Red
Write-Host " → $($errorHints)" -ForegroundColor Yellow
$foundAny = $true
}
}

if (-not $foundAny) {
Write-Host "主要なエラーコードは検出されませんでした。" -ForegroundColor Yellow
Write-Host "詳細は $resultLog を直接確認してください。" -ForegroundColor Gray
}

Write-Host "`n詳細ログ: $resultLog" -ForegroundColor Gray
} else {
Write-Warning "結果ファイルが生成されませんでした。ログが存在しない可能性があります。"
}

知られていない設定の宝庫Windows Updateの動作を制御するポイント

このセクションを読むと、Windowsの更新動作をGUI・レジストリの両方から制御する方法がわかり、アップグレード中の予期しない更新取得を根本から防止できるようになります。

「存在は知っているが使い方を知らない」設定として、Windows Updateの「アクティブ時間」と「接続の帯域制限」があります。これを適切に設定しておくだけで、アップグレード中に余計なバックグラウンド更新処理が走ってリソースを食い合う問題を大幅に軽減できます。

GUIからの設定(Windows 11の場合)

スタート → 設定 → Windows Update → 詳細オプション → 配信の最適化 → 「他のPCからのダウンロードを許可する」をオフにします。これでDoSvcのP2P通信が無効になり、セットアップ時の通信が純粋にMicrosoftサーバーとの一対一になります。46%フリーズの一因であるDoSvcの暴走を防ぐ効果があります。

Windows 10の場合は、設定 → 更新とセキュリティ → 配信の最適化 → 「他のPCからのダウンロードを許可する」をオフです。場所は違いますが同じ設定です。

レジストリからの設定(GUIで変えられない場合の迂回ルート)

企業のグループポリシーでGUI設定がグレーアウトされている場合や、設定アプリが壊れている場合は、レジストリで直接制御します。regedit.exeを管理者として開いて以下のキーを設定します。

配信の最適化を完全に無効化するには
パス

HKLM\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization

値の名前

DODownloadMode

(DWORD)
値のデータ

0

(無効)または

1

(ローカルネットワークのみ)

Windows Update自体の自動起動タイプを確認・変更するには
パス

HKLM\SYSTEM\CurrentControlSet\Services\wuauserv

値の名前

Start

(DWORD)
値のデータ

3

(手動。Windows 11のデフォルトはトリガー起動の3)

また、

HKLM\SYSTEM\CurrentControlSet\Services\DoSvc

Start

値を

4

(無効)にすれば配信最適化サービスを停止できます。アップグレード完了後は必ず

2

(自動)に戻してください。ただしWindows 10の場合はDoSvcをDisabledにするとWindowsUpdateが動かなくなる副作用があるため推奨しません。Windows 11ではDoSvcとwuauservの依存関係が見直されているため、一時的な無効化は安全です。

現場の「あるある困った」実体験解決集これ、教科書のどこにも書いてなかった

15年以上IT管理をやっていると、「ネットで調べても誰も同じ症状を書いていない」というトラブルに何度もぶつかります。以下は実際の現場で経験したケースです。

困った① 「やり直すたびに毎回46%で止まる。何度やっても同じ。」

【困った状況】

「クリーンアップして再起動して、また最初からやり直したのに、また46%で止まった。3回目も同じ。もう呪われてるのかと思った。」

【なぜこれが起きるのか】

WindowsはアップグレードのSetupが起動したとき、

C:\$WINDOWS.~BT

というフォルダに前回の作業ファイルを残します。このフォルダが残っている状態でやり直すと、セットアッププログラムが「前回の続き」からリジュームしようとして、壊れたデータにぶつかりフリーズします。ディスクのクリーンアップではこのフォルダが削除されない場合があります

【その場でできる応急処置】

  1. エクスプローラーを開き、Cドライブ直下の
    $WINDOWS.~BT

    フォルダを探す(隠しファイルの表示が必要)

  2. フォルダを右クリックして削除する。アクセスを拒否された場合は次の手順へ
  3. 管理者権限のコマンドプロンプトで
    takeown /f C:\$WINDOWS.~BT /r /d y

    を実行してから再度削除を試みる

【根本解決の手順】

コマンドプロンプト(管理者)で以下を実行します。

takeown /f C:\$WINDOWS.~BT /r /d y
icacls C:\$WINDOWS.~BT /grant administrators:F /t
rmdir /s /q C:\$WINDOWS.~BT

このフォルダ削除後、PCを再起動して再度アップグレードを試みてください。

【やってはいけないNG対処】

「何度やっても同じだからPCのリセット(初期化)で解決する」という選択肢はNGです。初期化はデータが全て消える場合があり、かつ根本原因のファイルキャッシュが残ったまま初期化されると同じ問題が再現することさえあります。まず

$WINDOWS.~BT

の削除を試してください。

【このコマンドで一発確認】

:: $WINDOWS.~BTフォルダの存在確認と中身のサイズ表示
dir C:\$WINDOWS.~BT /s /a 2>nul | findstr /i "ファイル"

困った② 「アップグレード中にウイルス対策ソフトを無効にしたのに、それでも46%で止まる。」

【困った状況】

「ちゃんとウイルス対策ソフトのアイコンを右クリックして保護を一時停止にしたのに、それでも全然進まない。ウイルス対策ソフトは関係ないの?」

【なぜこれが起きるのか】

セキュリティソフトの「一時停止」や「無効化」は、UIから見えるメイン機能を止めるだけで、カーネルレベルのフィルタドライバーは止まっていない場合があります。特にBitdefender、ESET、McAfee、Kasperskyなどのエンタープライズ向け製品は、OSの深いところに「ミニフィルタードライバー」と呼ばれるドライバーを差し込んでおり、UIから無効にしてもドライバー自体は動き続けてWindowsのファイルコピー処理に割り込みます。

【その場でできる応急処置】

  1. 管理者権限のコマンドプロンプトで
    fltmc

    コマンドを実行する

  2. 出力されたリストを見て、ウイルス対策ソフトのドライバー名が含まれているか確認する
  3. 含まれている場合は「一時停止」では不十分なので、ソフトウェアをアンインストールする

【根本解決の手順】

アップグレード前にウイルス対策ソフトを完全にアンインストールしてください。ほとんどのメーカーは「アンインストーラーツール」を提供しており、それを使わないとドライバーが残ることがあります。アップグレード完了後に再インストールすれば問題ありません。

【やってはいけないNG対処】

「一時停止にして再試行する」を繰り返すことはNGです。ドライバーが残っている以上、何度やっても同じです。アンインストールするまで解決しません。また、「Windows Defenderだから問題ない」と思ってサードパーティ製を入れたまま進めることもNGです。

【このコマンドで一発確認】

:: インストールされているフィルタードライバーの一覧を表示する(★管理者権限必要)
fltmc instances

困った③ 「インターネットを切断してアップグレードしたら、途中で青い画面(BSOD)になった。」

【困った状況】

「46%問題を回避するためにLANケーブルを抜いてオフラインでやったら、今度は途中でブルースクリーンになってWindowsが壊れた。元に戻れるの?」

【なぜこれが起きるのか】

BSODはオフライン操作とは直接関係なく、アップグレード中に古いドライバーとWindows 11の新しいカーネルが衝突したことが原因です。グラフィックドライバー、ストレージコントローラードライバー、チップセットドライバーが古いまま、あるいはメーカーがWindows 11に対応させていないドライバーのままアップグレードしようとすると、ドライバーをロードした瞬間にカーネルパニックが発生します。

【その場でできる応急処置】

  1. Windowsが自動でロールバック処理をしている最中なら、電源を切らずそのまま待つ(30分程度)
  2. 自動回復画面が出たら「詳細オプション」→「このPCを以前の状態に戻す」を選ぶ
  3. それでも起動しない場合は、インストールメディア(USB)から起動して「スタートアップ修復」を実行する

【根本解決の手順】

アップグレード前に、デバイスマネージャーから各ドライバーのバージョンを確認し、メーカーサイトで最新版に更新しておくことが根本解決です。特に確認すべきはディスプレイアダプター(GPU)、ストレージコントローラー(NVMe/SATA)、チップセットです。SetupDiagを実行すると、どのドライバーがBSODの原因だったかを特定できます(エラーコード

0xC1900101

が出ていれば確定です)。

【やってはいけないNG対処】

BSODが出た後にWindowsが回復処理をしている最中に電源を強制的に切ることは絶対NGです。回復処理が中断されると、ファイルシステムが中途半端な状態になってWindowsが起動すらできなくなります。BSODが出てもロールバック処理中は必ず待ちます。

【このコマンドで原因ドライバーを特定】

:: 最近クラッシュしたドライバーの情報をイベントログから抽出(★管理者権限必要)
Get-WinEvent -LogName System -MaxEvents 50 |
Where-Object { $_.Id -eq 41 -or $_.Id -eq 1001 } |
Select-Object TimeCreated, Message |
Format-List

困った④ 「法人PC50台のアップグレード作業で、10台以上が46%で止まって現場が混乱した。」

【困った状況】

「全台数にISOファイルをコピーして順番にアップグレードしていたら、かなりの確率で46%で止まってしまう。1台1台対処していたら日が暮れる。まとめて解決する方法はないか。」

【なぜこれが起きるのか】

法人環境では、全PCに同じセキュリティポリシーやグループポリシーが適用されています。Windows Updateの設定が「管理者が制御する」になっている場合、Setup.exeが更新サーバーへのアクセスをポリシーレベルでブロックされ、結果として46%で応答待ちになります。また、同時刻に多数のPCがMicrosoftのサーバーに問い合わせを行うと、サーバー側の応答が遅延してフリーズが多発することも知られています。

【その場でできる応急処置】

  1. 各PCでSetup.exeを起動する際に「更新プログラムのダウンロードを今は実行しない」を選択させる(GUI操作)
  2. あるいは、Setup.exeをコマンドラインから起動時に引数で制御する方法を使う(次に示す)

【根本解決の手順コマンドライン実行で一括対応】

管理者権限のコマンドプロンプトで以下を実行すると、更新チェックをスキップしてアップグレードが進みます。ISOをマウントしたドライブレターが

D:

の場合の例です。

:: Setup.exeを更新スキップオプションで起動する(★管理者権限必要)
:: /auto upgrade自動でアップグレード(ファイルとアプリを保持)
:: /eula acceptライセンス同意を自動承認
:: /DynamicUpdate disable動的更新(オンライン更新チェック)を無効化
D:\setup.exe /auto upgrade /eula accept /DynamicUpdate disable

このうち

/DynamicUpdate disable

オプションが46%問題の回避に直結する引数です。これ、公式ドキュメントには書いてあるけど誰も教えてくれないんですよね。GUIで「今は実行しない」を選ぶのと同じ効果を、コマンドラインで実現できます。

【やってはいけないNG対処】

複数台を同時刻に一斉にアップグレード開始することはNGです。Microsoftのサーバー負荷が集中して全台が同じ場所で止まります。時間差(30分おき程度)をつけて順番に実施してください。

困った⑤ 「ログを見てもどのエラーが「本当の原因」かわからない。エラーだらけで混乱した。」

【困った状況】

「setupact.logをメモ帳で開いたら何千行もあって、Errorって文字で検索しても100件以上ヒットする。どれが本当の原因なの?」

【なぜこれが起きるのか】

Windowsのセットアップログは設計上、「エラーとして記録されているが実害のない警告レベルのエラー」を大量に含みます。これは正常動作です。Windowsが内部で試みた処理が失敗してフォールバック処理に切り替わった場合も「Error」として記録されるため、ログのErrorが多くても問題ない場合がほとんどです。

【その場でできる応急処置】

SetupDiagツールを実行してください。これが数千行のログから「本当の致命エラー」だけを抽出してくれます。前述のスクリプト③を使うと自動化できます。

【根本解決の手順】

ログを手動で読む場合は、「末尾から上方向に」読むのが正解です。SetupDiagも「最後に記録された失敗が致命的なエラーである」という設計になっています。マイクロソフトの公式ドキュメントにも「複数の失敗がある場合、最後の失敗が通常は致命的エラー」と明記されています。先頭からではなく末尾から読む習慣をつけてください。

【やってはいけないNG対処】

ログの先頭付近のエラーを「これが原因だ」と思って対処することはNGです。アップグレードの初期処理で出るエラーは多くが無害です。致命的なエラーは必ず末尾近くに記録されています。

【このコマンドで末尾50行だけを表示】

:: setupact.logの末尾50行だけを表示する(エラーの本丸を素早く確認)
Get-Content "C:\`$WINDOWS.~BT\Sources\Panther\setupact.log" -Tail 50 -Encoding UTF8

Windows 11アップグレード関連エラーコード早見表

現場で遭遇しやすいエラーコードをまとめました。SetupDiagの結果を読む際の対照表として使ってください。

エラーコード 意味(平たく言うと) 主な対処法 Win10/11差異
0xC1900101
ドライバー起因のクラッシュ GPU/ストレージドライバーを最新版に更新または削除 両バージョンで発生。Win11のほうが要件厳しい
0xC1900209
互換性スキャン失敗(ソフトウェア) ウイルス対策ソフト・チートソフト等をアンインストール Win11で特に多い。アンチチートソフト要注意
0x80070002
ファイル見つからない(ドライバー欠損) SetupDiagでドライバー名を特定してメーカーサイトから更新 両バージョンで発生
0x800F0922
容量不足またはネットワーク問題 Cドライブ20GB以上確保・ネット接続確認 両バージョンで発生
0xC1900200
システム要件未達 TPM 2.0・セキュアブート・CPU世代を確認 Win11のみ。Win10へのアップグレードには出ない
0x80070570
ファイル破損 SFC /SCANNOW → DISM /RestoreHealthを順に実行 両バージョンで発生。HDDの劣化が原因のことも

ぶっちゃけこうした方がいい!

長い記事を最後まで読んでくれた方に、本音で話します。

正直に言うと、46%で止まる問題は「Windowsの設計上の欠陥」に近いと思っています。Windows 10の時代から今のWindows 11 25H2に至るまで、同じ場所で同じ理由で同じ人数が詰まり続けている。マイクロソフトがこれを根本修正していないのは、「ユーザーに気づかれないうちに修正するより、ドキュメントに『今は実行しない』って書いておけばサポートコストが下がる」という判断なのかもしれないと思うくらいです。

で、15年以上現場でWindowsを触ってきた個人的な結論はこうです。「アップグレードはオフライン(更新スキップ)で始める」を最初から選択肢の一番手に持っていくべきです。「推奨」を選ぶのはネット記事の流れで「念のため最新にした方がいいかな」という心理によるもので、それが罠です。アップグレード完了後にWindows Updateを手動で走らせれば同じ結果になるのだから、そもそも事前のオンライン確認なんて必要ない。

もう一つ、これを知っている人が少ないと感じているのですが、法人で複数台をアップグレードする場合、Setup.exeの

/DynamicUpdate disable

オプションを使えばGUI操作なしで全台一括処理できます。僕は50台案件でこれを知ったとき、「なんでこれをもっと早く知らなかったんだ」と本気で思いました。GUIでポチポチ対処するより圧倒的に楽で、ミスもなくなります。

それと、アップグレードに詰まったときの最初のアクションとしてSetupDiagを実行することを習慣にしてほしいです。「なんか止まってる、よくわからない、とりあえず再起動」というサイクルを繰り返す前に、SetupDiagが数十秒で「犯人」を教えてくれます。僕自身、最初の頃はログをひたすら手で読んでいましたが、このツールを使い始めてからトラブル解決時間が劇的に短くなりました。

最後に一つ、新しい視点として提案したいことがあります。46%問題は「アップグレードの失敗」ではなく「アップグレード前の環境整備の失敗」と捉えた方がいいです。ドライバーが古い、キャッシュが汚れている、セキュリティソフトが邪魔している―これらは全部、アップグレード前に確認できることです。本記事で紹介したスクリプト①の事前診断を走らせるのに5分もかかりません。アップグレードで詰まって数時間格闘するくらいなら、最初の5分を環境確認に使ってください。それだけで、この記事に書いてあるトラブルの8割は未然に防げます。

詰まったときに焦らなくていい。構造を知っていれば、必ず突破口は見つかります。

Windows11のアップグレード46%問題に関するよくある質問

46%で止まって2時間経ちましたが、まだ待つべきですか?

2時間以上変化がない場合、そのまま待ち続けても進む可能性は低いです。ただし、電源ボタンで強制終了するのは危険です。まずタスクマネージャー(

Ctrl + Shift + Esc

)を開いて、CPUやディスクの使用率を確認してください。もし使用率がほぼ0%のまま何も動いていない状態なら、セットアップ画面の「×」ボタンで安全にキャンセルしてから、本記事の解決策を試してください。

「今は実行しない」を選ぶと、セキュリティ的に問題はありませんか?

アップグレード完了後にWindows Updateを手動で実行すれば、すべての最新パッチが適用されます。インストールの前後で更新するという違いだけで、最終的なセキュリティ状態は同じになります。心配な方は、アップグレード完了直後にWindows Updateを開いて「更新プログラムのチェック」を実行してください。

システム要件を満たしていないPCでもこの問題は起きますか?

はい、起きます。システム要件(TPM 2.0、セキュアブート、第8世代以降のIntelCPUなど)を満たしていないPCでアップグレードを試みると、この46%問題が発生しやすいとも言われています。システム要件を満たさないPCへのWindows 11インストールはレジストリ編集などによる非公式な手順が必要で、リスクも伴います。まずは「PC正常性チェックアプリ」でお使いのPCがWindows 11に対応しているか確認しましょう。

解決策をすべて試してもダメな場合はどうすればいいですか?

すべての方法を試してもアップグレードが進まない場合、システムファイルやストレージ自体に何らかの障害が発生している可能性があります。まず、コマンドプロンプトから

sfc /scannow

を実行してシステムファイルの整合性チェックをしてみてください。それでも解決しない場合、または大切なデータが入っているPCであれば、専門業者への相談も選択肢に入れてください。ただし、データが無事であれば、クリーンインストール(初期化してWindows 11を新規インストールする方法)が最も確実な最終手段になります。クリーンインストール前には必ずデータのバックアップを忘れずに。

25H2への更新でも同じ問題が起きましたが、対処法は同じですか?

はい、まったく同じ対処法が有効です。Windows 10からWindows 11への移行でも、Windows 11の各バージョン間のアップデートでも、この46%問題の原因と解決策は共通しています。「セットアップでの更新プログラムのダウンロード方法の変更」から「今は実行しない」を選択する方法が、最も手軽で成功率の高いアプローチです。

今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

Windows 11のアップグレード中に46%で止まる現象は、Windows Updateサービスのフリーズ、破損したキャッシュ、セキュリティソフトの干渉、周辺機器の干渉、ディスク容量不足など、複数の原因が絡んでいます。そして2025年末から2026年の今も、25H2へのアップデートで同様の問題が続いています。

まず試してほしいのは、セットアップの最初の画面で「更新プログラムのダウンロード方法の変更」→「今は実行しない」を選ぶことです。この一手で多くのケースが解決します。それでもダメなときは、Windows Updateサービスの再起動やシステムファイルのクリーンアップを組み合わせて試してみてください。

Windows 10のサポートはすでに終了しており、セキュリティリスクは日に日に高まっています。本記事の手順を参考に、焦らず一歩ずつ、確実にWindows 11への移行を完成させましょう。アップグレードさえ終わってしまえば、あとはきっと快適な新しいWindows環境が待っています!

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

相談窓口(問い合わせ/LINE等)を設け、記事で解決しないケースも個別にサポートしていますので「パソコンが急に動かなくなった」「スマホの設定がわからない」などの悩みは一人で抱え込まず、お気軽にご相談ください。

【お問い合わせは下記URLから】
https://m32006400n.xsrv.jp/inquiry-form/

【公式LINEは下記URLから】
https://lin.ee/t8TDjcj

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

タイトルとURLをコピーしました