「svchost.exe」と「APHostService.dll」のエラー(DISM)

Windowsノートパソコンの動作が極端に遅いというので、イベントビューアーをみてみたら、APHostService.dllの読み取りエラーがありました。

稼働しているWindowsシステムの不具合だったので、「DISM /Online /Cleanup-Image /RestoreHealth」で修復しました。

イベントビューアーで見つけた2つのエラー

先日、「Windowsノートパソコンの動作が極端に遅い」という相談がありました。

確かに、起動直後からCPU使用率がほぼ100%に張り付き、マウスを動かすだけでも数秒の遅れがありました。
タスクマネージャーを確認すると、「Antimalware Service Executable(Microsoft Defender)」などがCPUを大量に使用していました。
パソコンはCeleronプロセッサを搭載しており、もともと高性能ではありませんが、それにしても異常な動作でした。

以前はもっとスムーズに動いていたため、単なる性能の問題ではないと感じました。
原因を探るため、イベントビューアーを開いてみることにしました。

ログを確認すると、起動後に気になるエラーが二つ表示されていました。

  • ひとつは「Kernel-EventTracing」に関するもので、「Cloud Files Diagnostic Event Listenerを開始できませんでした(0xC0000022)」という内容です。
  • もうひとつは「Application Error」で、svchost.exeAPHostService.dll に関連してクラッシュしているというものでした。

Cloud Files Diagnostic Event ListenerとOneDrive

Cloud Files Diagnostic Event Listenerのエラーは OneDrive や「Files On-Demand」機能と関係がある、という報告が複数見つかっています1

エラーコード 0xC0000022 は、Windows において「アクセスが拒否されました(STATUS_ACCESS_DENIED)」を表す典型的なコードです。
つまり、プロセスやサービスが、必要なファイルやレジストリ、リソースへのアクセス権を持っていない、という状態を示していることが多いです。

そこで、「すべてのファイルをダウンロード」して、ファイルオンデマンドを無効にしました。

APHostService.dllのエラー「0xC0000005」

また、 APHostService.dll を調べてみると、このDLLは「Accounts Host Service(アカウントホストサービス)」というWindowsのシステム機能に関係しており、メールやカレンダー、連絡先などのデータ同期を行う「OneSyncSvc」というサービスで利用されていることがわかりました。

つまり、Windowsのアカウント同期やクラウド機能に関係する部分でトラブルが起きていた可能性があります。

ログには「例外コード:0xC0000005」と記載されていました。
これは「アクセス違反(Access Violation)」を意味するエラーです。
プログラムが不正なメモリ領域にアクセスした場合に発生します。
svchost.exeAPHostService.dll を読み込む際に、破損した領域を参照したり、アクセス権のない部分に触れたことが原因と考えられます。

このようなエラーは、システムファイルが壊れている場合によく起こります。

SFCを使ってシステムをチェックした

そこでまず、Windowsに標準で備わっている「SFC(システムファイルチェッカー)」を使って修復を試みました。

管理者権限でコマンドプロンプトを開き、次のコマンドを実行しました。

sfc /scannow

このコマンドは、システムファイルをスキャンし、破損しているファイルを自動で修復します。

DISMでシステムイメージを修復する

しかし、それでも起動エラーは直りません。

SFCで修復できない場合は、システムの基盤となる「Windowsイメージ」が壊れている可能性があります。
その場合に試すべきなのが「DISM(Deployment Image Servicing and Management)」です。

DISM /Online /Cleanup-Image /RestoreHealth

このコマンドの意味は、「現在使用中のWindowsイメージをクリーンアップし、破損を修復する」です。

処理には少し時間がかかりましたが、最終的に「操作は正常に完了しました」と表示されました。パソコンを再起動すると、動作がかなり軽くなっていました。

DISMはSFCより深いシステムのエラーを解決する

SFCは「手元のバックアップ(WinSxS)」と比較して直すツールです。
ただし、この「バックアップ自体」が壊れていたら、SFCでは直せません。

一方、DISMは、Windowsの「OSイメージ」そのものをチェックし、破損している部分を修復します。必要に応じてインターネット経由でMicrosoftの公式サーバーから正常なコンポーネントを取得して修復できます。SFCが利用する“修復元のデータ”が壊れている場合に、それを再構築するのがDISMの役目です。

今回の原因は、APHostService.dll を含むシステムファイルの破損だったと考えられます。
この不具合によって同期サービスやDefenderの動作が乱れ、結果的にCPUが高負荷になっていたようです。
一見すると「ウイルス対策が重い」という単純な問題に見えても、その裏ではシステム内部の破損が影響している場合があります。

  1. Session “Cloud Files Diagnostic Event Listener” failed to start with the following error: 0xC0000022 – Microsoft Q&A