私の PC デスクトップ システムの寿命のある時点で、ビデオ ゲームをプレイしているときに 2 回連続でブルー スクリーンが表示されました。その後、すべてのハードウェアを再配線してシステムのクラッシュをなんとか止めましたが、何らかの理由で、1803 から 1903 への年次アップグレードや、1803 バージョンの Windows の .NET Framework の 4.8 へのランダム アップデートなど、システムに影響する Windows アップデートはインストールに失敗し続けました。これらは必須ではなかったため、Windows Defender への定期的なセキュリティ アップデートは引き続き機能していたため、気にしていませんでした。ある時点で、Windows Update トラブルシューティング ツールを実行したところ、エラーがいくつか見つかったが、再起動すると修正ルーチンが実行されるというメッセージが表示されました。
ある時点で、更新を再び機能させることにしました。更新の失敗は、.NET 更新の場合は 0x8000ffff、Windows アップグレードの場合は 0x800700C12 でした。
検索してみると、ネット上に大量のゴミが見つかります。Windows のあらゆるエラーは、脆弱なユーザーがマルウェアをインストールしてしまう絶好の場所であることは誰もが知っているからです。
MediaCreationTool をダウンロードし、手動で 1903 にアップグレードするように指示しても、「重大なエラー」が発生して失敗しましたが、システムには何も影響がなく、変更が適用されなかったようです。ただし、ログはありません (これらの役立つエラー メッセージを提供してくれた Microsoft に感謝します)
PowerShell コマンド GetWindowsUpdateLog を使用して Windows Update ログをダンプした結果、わかったことは... あまりありませんでした。これらのエラー ログを読むのは面倒で複雑です。また、エラーと障害の区別や、通常の操作中には決して耳にしたことのないシステムが関係しているという事実 (少なくとも Linux では、システムをセットアップするときにどのシステムを使用し、インストールするかがわかります) も役に立ちませんでした。
次に、.NET 4.8 Framework の手動インストールを試みました。通常のインストーラーでも失敗しましたが、少なくともドライブのランダムな場所に検索可能な .xml がダンプされました (何らかの理由で、インストール ファイルは、たとえばシステムがインストールされた SSD 上のどこかではなく、低速の 2TB ストレージ HDD にダンプされました。でも、Windows と一時ファイルです。一時ファイルがクリーンアップされないと、何が問題になるのでしょうか?)。そこで調べてみると、インストールの最終ステップで実行されたコマンド ライン プログラムが失敗し、同じ 0x8000ffff エラー コード wusa.exe が返されたことがわかりました。
エラー メッセージを比較すると、少なくともインストール中によくあるエラーである「ファイナライズ部分が失敗します」というエラーがあります。
Windows Update を修正する方法を調べていたところ、次のアドバイスを見つけました:
sfc /scannow
そして
dism.exe /online /cleanup-image /restorehealth
sfc は、システムへの変更がまだ保留中であるため、PC を再起動する必要があるという情報で失敗しました。過去 6 か月間毎日これを実行しましたが、解決策にはなり得ませんでした。
dism.exe は 82.6% あたりで失敗しましたが、少なくとも調べるべきログがあるというヒントは得られました。ログの形式もあまり役に立ちませんでしたが、最終処理のステップでも失敗しました。
sfc を再び動作させる方法を調べていたところ、WinSxS ディレクトリの pending.xml を削除するようにユーザーに指示するフォーラムの投稿が見つかりました。そのディレクトリ (何に使用されているかは不明) を調べてみると、pending.xml が見つかりました。そのサイズは 300 MB 近くあります。何かおかしいようです。
管理者としてファイルを削除しても機能しません。アクセス拒否エラーが繰り返し発生します。PSTools をダウンロードし、SYSTEM ユーザーとして Power Shell を開いても、削除権限が拒否されます。ファイルへのハンドルを保持しているプロセスはありません。
この混乱をどう修正すればいいのでしょうか。また、これらすべてのエラーはどのように関連しているのでしょうか。
答え1
結局、全体がエラーの絡み合った混乱状態であることが判明しました。
ビデオ ゲームをプレイしているときに表示されたブルー スクリーン (約 10 年ぶり) は、Windows Update がバックグラウンドで何かをインストールしているときに表示されたようです。更新自体が原因かどうかはわかりませんが、ブート スクリプトが破損していると報告されたため、システムを再度実行するのにいくつかの手順を踏まなければなりませんでした。当時は、ブートの問題を解決するために、トラブルシューティングの詳細ブート メニューから基本的なコマンド ライン ツールを実行したと思います。その後、ディスクにデータを書き込むときに奇妙なことが起こったというエラー ログが記録されていたため、すべての配線をやり直しました。そのため、システムの実行中に何らかの理由でシステム SSD への配線が切断されたと考えました。それが修正された後、システムは再びスムーズに実行されましたが、更新は機能しなくなりました。
「ファイル破損」はもっと深刻な問題であることが判明しました。pending.xml 内には、PC の再起動時に適用する必要がある更新のリストが存在するようです。しかし、その .xml ファイルは何らかの理由で壊れており、Windows は内容を正しく読み取ることができませんでしたが、適用する必要があると思われるすべての更新を壊れたファイルに追加することはできました。そのため、ファイルから任意の量のデータが読み取られ、再起動のたびにそのすべてのデータがファイルの後ろに追加され、保留中の更新に関するメタデータがほぼ GB の割合で膨れ上がっていました。
Windows のアップグレードと .NET インストーラーも、最終処理のステップでシステムに「デバイスの次回の再起動時に何かを行う必要があります」と伝えるため、スタンドアロン インストーラーやメディア作成ツールを使用した手動アップグレードでも、pending.xml を正しく解析して追加できませんでした。このすべてが壊れていたため、一部のプログラムでは ComponentBasedServicing が原因のようで、エラー ログ ファイルのあちこちに CBS が表示されていました。
さて、解決策です:
まず、メディア作成ツールで設定した USB スティックからトラブルシューティング モードで起動する必要がありました。
そこでコマンド ラインを起動し、WinSxS ディレクトリ内の pending.xml を手動で削除しました。
sfc /scannow
その後、実行して、一部のファイルが破損し、一部は修正されたが、すべてではないというレポートを最終的に取得できました。
その後、 を実行できましたdism /online /cleanup-image /restorehealth
が、クリーンアップするソースが見つからず失敗しました。
dism /online /cleanup-image /startcomponentcleanup
その後、コンポーネントサービスをクリーンアップするために実行できました
その後、私はまた別の/restorehalth
成功を成し遂げることができました。
その後、Windows Update キャッシュをリセットし、保留中のすべての更新とアップグレードを再ダウンロードすることができました。
その後、1903 アップグレードと .NET Framework アップデートをインストールすることができました。
今はすべて順調のようです。
Windows には、スーパーユーザーだけでなく、システムで何かが壊れたときに、何が壊れているのか、何が壊れていないのかについて、より明確な情報をユーザーに提供してほしいと思います。
この捜索は地獄でした。そして私はそこから抜け出しました。