はじめに
Windows Updateで0x800f0900、0x8024200Bのエラーが出てしまい、Windows起動時に固まる、ブルースクリーンという現象まで発生したため、まずはWindows Updateのエラーの解消を目指したのですが、ドハマリしてしまいました。
今回はDISMコマンドを使ってWindowsを修復する方法にチャレンジしています。
大半の場合、後述の「やったこと(その1)WIMファイル(esdファイル)からの復旧」で解消するのだと思いますが、私の環境では”エラー: 0x800f081f ソース ファイルが見つかりませんでした。”が発生しました。
それでは、と「やったこと(その2)”ソースファイルが見つかりませんでした”と出た時の対処法」をやってみたのですが、それでも”エラー: 0x800f081f ソース ファイルが見つかりませんでした。”となってしまいました。
たぶん、普通の環境では上記のいずれかの方法でうまくいくのだと思いますが、私の環境だとエラーとなる理由を「(考察)なぜDISMで”ソースファイルが見つかりませんでした”になるの?」で私なりに考えてみました。
最終的には「結局どうしたか?Windows Update 情報クリアで応急処置」でWindows起動時にエラーで固まる現象は回避しました。が、根本的な解決には至っていません。
今回の現象の解決方法はもう少し考えるとして、今回覚えたことは今後Windowsに不具合が発生した際には使えるかな、と思っています。
きっかけはクリアインストール後の環境再構築
CPUをFX8350に変更したらなぜか交換前のPhenomIIより遅くなってしまったのでWindows10をクリアインストールしました。
クリアインストール後はFX8350の性能が出てホッとしたのですが、その後の環境再構築の際にどうも不安定な現象が発生しだしました。
発生した現象
Skyrimが起動しない
Skyrimランチャーで「PLAY」を選択すると、ランチャーが落ちてしまいました。
エクスプローラーで”SkyrimSELauncher.exe”(※)を右クリックし、「管理者として実行」を選択してランチャーを起動してみます。
※Cドライブ直下にインストールしている場合のパスはC:\Steam\steamapps\common\Skyrim Special Edition\SkyrimSELauncher.exe
ランチャー起動後、「PLAY」を選択すると、以下のエラーが出ました。
d3dx9_42.dllはゲームで利用しているDirectX9のdllです。”0xc000012f”はWindows Updateがファイルを読み込めなかった時に出るエラーのようです。
DirectX12を使ったRise of the Tomb Raiderも3DMarkも動作します。DirectXが単純に壊れた、というわけではなく、古いゲームを司るDirectX9部分が壊れたようです。
Windows Updateでエラー 0x800f0900
スタートメニューを右クリックし「設定」-「更新とセキュリティ」-「Windows Update」を見てみます。
「再試行」を選択してみましたが、やっぱり同じエラーになります。
スタートメニューを右クリックし「イベントビューアー」を見てみます。
WindowsUpdateで0x800f0900エラーの他に0x8024200Bというエラーも出ています。
Windowsが起動しない
Windows起動時にWindows Updateの処理を失敗することが関係あるのかもしれませんが、Windowsが起動しない(固まる、アクセスランプ点きっぱなし)ということが頻繁に発生しました。
リセットボタンで強制的に再起動すればたいていは起動するのですが、再起動してもまた固まる時もあります。イベントビューアーにはKP41がたくさん出ていました。
ブルースクリーンは発生していないので、固まった時に無理やりリセットした事で発生するKP41なのだと思います。
他にもイベントID2という見慣れないエラーも出ています。
とうとうブルースクリーン発生
それはSteamからRise of the Tomb Raiderをダウンロードしていた時に発生しました。いきなりのブルースクリーン。
久しぶりに見たけど、何度見ても慣れることはありませんね。
ブルースクリーンはその一度だけですが、不安定な状況であることは間違いありません。
Windows Updateもできない状態です。何とかしなければなりません。
やったこと(その1)WIMファイル(esdファイル)からの復旧
Windwos Updateで失敗し、ファイルが壊れている可能性が高いので、何とかWindows Updateを正常な状態にしたいと考えました。0x800F0900で検索したところ、参考になりそうなサイトがあったので試してみました。
DISMコマンドのエラー0x800f081f
このサイトに倣い「Windows Power Shell (管理者)」で以下のコマンドを叩いてみました。
DISM.exe /Online /Cleanup-image /Restorehealth
るとエラーコード”0x800f081f”が発生しました。同じ状況ですね。このサイトの対処方法で解決できるかもしれません。
WIMファイルの作成
Windows10インストールメディアを作成し、”install.esd”をC:\tempにコピーし、Power Shell (管理者)で以下のコマンドを実行します。(”cd c:\temp”でカレントディレクトリーを移動しておいてください)ちなみに私はWindows10Proを使っているので”SourceIndex:3″としています。
PS C:\temp> dism /export-image /SourceImageFile:install.esd /SourceIndex:3 /DestinationImageFile:install.wim /Compress:max /CheckIntegrity
(実行結果)エラー:605
展開イメージのサービスと管理ツール バージョン: 10.0.19041.572 イメージをエクスポートしています [========== 18.0% ] エラー: 605 指定したバッファーに誤った形式のデータが含まれています。 DISM ログ ファイルは C:\WINDOWS\Logs\DISM\dism.log にあります PS C:\Temp>
あらら。途中18.0%で”エラー:605″となってしまいました。
この原因が分からず徹夜してしまいましたが、Windowsが起動しない時に何度もリセットで強制再起動していたのでディスクが不整合を起こしていたのだと思います。
“CHKDSK c: /f”を行い、念のためUSBにWindowsインストールメディアを作り直し”install.esd”を取得し直し実行したところ、すんなり完了しました。
(実行結果)正常に完了
展開イメージのサービスと管理ツール バージョン: 10.0.19041.572 イメージをエクスポートしています [==========================100.0%==========================] 操作は正常に完了しました。 PS C:\temp>
C:\tempに”install.wim”ができました。”install.esd”よりファイルサイズは大きくなっています。
DISMコマンドでシステムファイルを修復する
続いて「Windows Power Shell (管理者)」で以下を実行します。
DISM /Online /Cleanup-Image /StartComponentCleanup
正常に完了しました。次に以下を実行します。
DISM /Online /Cleanup-Image /AnalyzeComponentStore
次です。私はWindows10Proを使っているので、”install.wim:3″にしています。Homeなら”install.wim:1″ですね。
DISM /Online /Cleanup-Image /RestoreHealth /source:WIM:C:\temp\install.wim:3 /LimitAccess
(実行結果)エラー: 0x800f081f
PS C:\temp> DISM /Online /Cleanup-Image /RestoreHealth /source:WIM:C:\temp\install.wim:3 /LimitAccess 展開イメージのサービスと管理ツール バージョン: 10.0.19041.572 イメージのバージョン: 10.0.19042.631 [===========================84.9%================= ] [==========================100.0%==========================] エラー: 0x800f081f ソース ファイルが見つかりませんでした。 機能の復元に必要なファイルの場所を指定するには、"Source" オプションを使用してください。ソースの場所の指定方法の詳細につ いては、https://go.microsoft.com/fwlink/?LinkId=243077 を参照してください。 DISM ログ ファイルは C:\WINDOWS\Logs\DISM\dism.log にあります
がっがり…。”0x800f081f”発生です。
やったこと(その2)“ソースファイルが見つかりませんでした”と出た時の対処法
“0x800f081f”がどうしても発生してしまうので、何か方法は無いものかと探していたところ、次のサイトが見つかりました。
“0x800f081f”「ソース ファイルが見つかりませんでした。」が出た時の対象法です。期待できそうです。
まず、”install.esd”をHドライブ直下に置き、Hドライブに”mount”というフォルダを作成し、以下を実行しました。
DISM.exe /Apply-Image /ImageFile:H:\install.esd /index:3 /Applydir:H:\mount
(実行結果)正常
展開イメージのサービスと管理ツール バージョン: 10.0.19041.572 イメージを適用しています [==========================100.0%==========================] 操作は正常に完了しました。 PS C:\WINDOWS\system32>
次です。
Dism /Online /Cleanup-Image /CheckHealth
(実行結果)正常
展開イメージのサービスと管理ツール バージョン: 10.0.19041.572 イメージのバージョン: 10.0.19042.631 コンポーネント ストアは修復できます。 操作は正常に完了しました。
正常に完了しました。次です。
Dism /Online /Cleanup-Image /RestoreHealth /Source:H:\mount\windows /LimitAccess
(実行結果)エラー: 0x800f081f
展開イメージのサービスと管理ツール バージョン: 10.0.19041.572 イメージのバージョン: 10.0.19042.631 [===========================84.9%================= ] [==========================100.0%==========================] エラー: 0x800f081f ソース ファイルが見つかりませんでした。 機能の復元に必要なファイルの場所を指定するには、"Source" オプションを使用してください。ソースの場所の指定方法の詳細につ いては、https://go.microsoft.com/fwlink/?LinkId=243077 を参照してください。 DISM ログ ファイルは C:\WINDOWS\Logs\DISM\dism.log にあります PS C:\WINDOWS\system32>
やっぱりエラーです。どうしても「ソース ファイルが見つかりませんでした」になってしまいます。H:\mount\windowsにソースファイルはちゃんとあるのに…。なんで?
ダメだと思いつつも残りの手順を続けてみました。
PS C:\WINDOWS\system32> DISM.exe /Cleanup-Wim
(実行結果)正常
展開イメージのサービスと管理ツール バージョン: 10.0.19041.572 ドライブ C で古いファイルをスキャンしています ドライブ D で古いファイルをスキャンしています ドライブ E で古いファイルをスキャンしています ドライブ F で古いファイルをスキャンしています ドライブ G で古いファイルをスキャンしています ドライブ H で古いファイルをスキャンしています 操作は正常に完了しました。
次です。
PS C:\WINDOWS\system32> sfc /scannow
(実行結果)整合性違反を検出しませんでした。
システム スキャンを開始しています。これにはしばらく時間がかかります。 システム スキャンの検証フェーズを開始しています。 検証 100% が完了しました。 Windows リソース保護は、整合性違反を検出しませんでした。
何だかうまく行くかも?
次です。
Get-AppXPackage -AllUsers |Where-Object {$_.InstallLocation -like "SystemApps"} | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
(実行結果)
Add-AppxPackage : 次の HRESULT で展開に失敗しました: 0x80073D02, 変更されるリソースが現在使用中であるため、パッケージを インストールできませんでした。 エラー 0x80073D02: 次のアプリを閉じる必要があるため、インストールできません: Microsoft.Windows.StartMenuExperienceHost_ 10.0.19041.610_neutral_neutral_cw5n1h2txyewy。 注: 詳細については、イベント ログで [ActivityId] 4ea70ec1-ec8f-0007-f819-a74e8fecd601 を検索するか、コマンド ラインの Get-AppPackageLog-ActivityId 4ea70ec1-ec8f-0007-f819-a74e8fecd601 を使用してください 発生場所 行:1 文字:96 …(略)…
何だかエラーが出ました。やっぱりダメそうです。
Windows Updateを再試行してみましたが、案の定、何も改善はみられません。やっぱりエラー 0x800F0900 、 0x8024200Bが発生しました。
(考察)なぜDISMで”ソースファイルが見つかりませんでした”になるの?
「”ソースファイルが見つかりませんでした”と出たときの対処法」をやってみてもやっぱり”エラー: 0x800f081f ソース ファイルが見つかりませんでした。”が出た時はショックでした。
“sfc /scannow”でも「整合性違反を検出しませんでした。」となりますし、Windows Updateのトラブルシューティングツールでも「問題を特定できませんでした」となってしまいます。
Windows的には問題が発生しているとは認識できていないようです。実際、起動してしまえば普通に使えます。
でも、実際にWindows Updateでエラーが起きますし、Windows Updateができないのは困ります。何とか修復しなければなりません。なぜソースファイルがあるのにDISMでエラーになってしまうのでしょう?
「ソースファイルが見つかりませんでした」となる理由
あくまで推測ですが、私の環境が
Windows 10 20H2、OSビルド:19042.631 (バージョン:10.0.19042.631)
に対し、Microsoftから提供されている現在のWindowsインストールメディアのバージョンが
Windows 10 October 2020 Update(20H2) (バージョン:10.0.19041.572)
となっているのが原因と思われます。
私の環境(新)10.0.19042.631 > インストールメディア(旧)10.0.19041.572
となっているため、DISMの制限事項に当たるのではないかと思われます。
制限事項
バージョンの互換性。 DISM は、古い Windows オペレーティング システムのターゲット イメージで使用できますが、インストールされている DISM のバージョンよりも新しいオペレーティング システムのターゲット イメージでは使用できません。 たとえば、Windows 10 バージョン 1511 の DISM では、Windows 10 バージョン 1511 およびバージョン 1507 を操作できますが、バージョン 1607 は操作できません。
(引用)https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/what-is-dism
単純に「ソースが見つからない」と言っているわけではなく、「あなたの環境を修復するのに必要な最新バージョンのソースが見つからない」というエラーなんだと思います。
だったら私の環境をWindows 10 の回復オプションでWindows 10 October 2020 Update(バージョン:10.0.19041.572)に戻せないか、と色々試してみましたが、インストール済のアプリを消さずに戻す方法は無さそうです。
インストール済の更新プログラムをアンインストールすることもできませんでした。
手詰まりです。アプリを消して「回復」させるしかないのか…。それってクリアインストールと同じですよね。
結局どうしたか?Windows Update 情報クリアで応急処置
Windows起動時に、”イベント 20 WindowsUpdateClient”の”エラー:0x800f0900″、”エラ:0x8024200B”が発生するのがアクセスランプ点きっぱなしで固まる要因になっていると考え、これだけでもまずは回避したいと考えました。
以下のサイトを参考にしました。
コマンドプロンプトを管理者権限で起動し、以下のコマンドを実行していきます。
C:\WINDOWS\system32> (net stop usosvc) Orchestrator Service の更新 サービスを停止中です. Orchestrator Service の更新 サービスは正常に停止されました。
C:\WINDOWS\system32> (net stop dosvc) Delivery Optimization サービスを停止中です. Delivery Optimization サービスは正常に停止されました。
C:\WINDOWS\system32> net stop wuauserv Windows Update サービスは開始されていません。
C:\WINDOWS\system32> net stop bits Background Intelligent Transfer Service サービスは開始されていません。
ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
次のコマンドについては、参考にしたサイトでWindows10の1703以前と以降の説明を書いてくれているようなのですが、どちらも「1703以降」の説明になっていたので、実際に存在するファイルを確認し、以下のコマンドを実行しました。
del /Q %ALLUSERSPROFILE%\Microsoft\Network\Downloader*
C:\ProgramData\Microsoft\Network\Downloader 配下のファイルが消えました。
停止したサービスを起動していきます。
C:\ProgramData> net start bits Background Intelligent Transfer Service サービスを開始します. Background Intelligent Transfer Service サービスは正常に開始されました。
C:\ProgramData>net start wuauserv Windows Update サービスを開始します. Windows Update サービスは正常に開始されました。
C:\ProgramData>(net start dosvc) Delivery Optimization サービスを開始します. Delivery Optimization サービスは正常に開始されました。
C:\ProgramData> (net start usosvc) Orchestrator Service の更新 サービスを開始します. Orchestrator Service の更新 サービスは正常に開始されました。
Windows Updateを見てみるとエラーの状態から「最新の状態です」に戻りました。
ただし、「更新プログラムのチェック」を押してしまうと、結局またUpdateがかかり、エラーの状態になってしまいます。もう一度Windows Update情報をクリアし、最新の状態に戻しました。
根本的な解決は先送り
応急処置により、Windows起動時に固まる現象は回避できました。
しかし、Skyrimは動きませんし、またWindowsUpdateがかかるとエラーの状態に戻ってしまいます。
やはりクリアインストールしかないのか?もう少し考えてみます。
コメント