web-dev-qa-db-ja.com

sfcとdismが使用できないときにWindowsUpdateが更新プログラムをインストールできない問題を修正

PCデスクトップシステムの寿命のある時点で、ビデオゲームをプレイしているときに2つのブルースクリーンが連続して表示されました。その後、すべてのハードウェアを再配線することでシステムのクラッシュを防ぐことができましたが、何らかの理由で、1803から1903への年次アップグレードや1803バージョンのWindowsの.NETフレームワークの4.8へのランダムアップデートなど、システムに影響を与えるWindowsアップデートがありましたインストールに失敗し続けました。 Windows Defenderの定期的なセキュリティ更新は引き続き機能するため、私は気にしませんでしたが、必須ではありませんでした。ある時点で、Windows Updateのトラブルシューティングを実行しましたが、エラーが見つかったとのことでしたが、再起動すると修正ルーチンが実行されます。

ある時点で、アップデートを再び機能させることにしました。更新の失敗は、.NET更新の場合は0x8000ffff、Windowsアップグレードの場合は0x800700C12でした。

それらを検索すると、すべてのWindowsエラーが脆弱な人々にマルウェアをインストールさせるのに最適な場所であることがわかっているため、オンラインで大量のがらくたを見つけることができます。

MediaCreationToolをダウンロードし、1903に手動でアップグレードするように指示しても、システムに影響はないようで、変更を適用しなかったにもかかわらず、「重大なエラー」で失敗しました。ただし、ログはありません(これらの役立つエラーメッセージをMicrosoftに感謝します)

PowerShellコマンドGetWindowsUpdateLogを使用してWindowsUpdateログをダンプすると、...あまりわかりませんでした。これらのエラーログの読み取りは面倒で複雑であり、エラーと障害の区別だけでなく、通常の操作では聞いたことのないシステムが関係しているという事実もあります(少なくとも、Linuxでは、設定時に使用およびインストールするシステムを知っています)。システムをアップ)は役に立ちませんでした。

次に、.NET 4.8Frameworkを手動でインストールしようとしました。また、通常のインストーラーでは失敗しましたが、少なくともドライブのランダムな場所に検索可能な.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がほぼ300MB大きいことがわかりました。何かが正しくないようです。

管理者としてファイルを削除しても機能しません。アクセス拒否エラーが発生し続けます。 PSToolsをダウンロードし、SYSTEMユーザーがPower Shellを開くと、削除する権限が拒否されます。ファイルへのハンドルを保持するプロセスはありません。

この混乱を修正するにはどうすればよいですか?また、これらすべてのエラーはどのようにリンクされていますか?

3
salbeira

全体が絡み合ったエラーの混乱であることが判明しました。

ビデオゲームをプレイしているときに取得したブルースクリーン(約10年ぶりに取得したもの)は、WindowsUpdateがバックグラウンドで何かをインストールしているときに発生したようです。アップデート自体が原因であるかどうかはわかりませんが、ブートスクリプトが破損していると報告されたため、システムを再度実行するためにいくつかのフープを飛び越えなければなりませんでした。当時は、トラブルシューティングの高度なブートメニューからいくつかの基本的なコマンドラインツールを実行して、ブートの問題を修正したと思います。次に、エラーログからディスクへの書き込み中に何か奇妙なことが起こったことがわかったので、すべてを再配線しました。システムの実行中に、何らかの理由でシステムSSDへの配線接続が切断されたと思いました。その後、システムはスムーズに動作しましたが、アップデートは機能しなくなりました。

「ファイルの破損」がさらに深刻化したことが判明しました。保留中の.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アップグレードと.NETFrameworkアップデートをインストールすることができました。

これで、すべてが正常にSEEMSされます。

私は、Windowsが、スーパーユーザーだけでなく、ユーザーに、何かが壊れたときにシステムで何が壊れているか、何が壊れていないかについてのより明確な情報を提供したいと思っています。

この検索は地獄でした。そして、私はそれから抜け出しました。

3
salbeira