Windowsを使っていると、たまに調子が悪い(アプリが落ちる、不明なエラーを吐く、ブルースクリーンが出る)ときがあります。何かの拍子にシステムが破損している可能性があります。
こういう時に役に立つのが、 sfc /scannow のコマンドですが、このコマンド自体が失敗することもあるようです。今回は sfc /scannow が使えずに私が試行錯誤した結果を紹介します。
今回私が直面したエラーは以下です。
Windows リソース保護は、修復サービスを開始できませんでした。
私の結論
このサイトにたどり着いている時点で、他のサイトで試していることが多いでしょうから、私の結論から書きます。アカウントを変えたらうまくいきました。2つのアカウントは、どちらも同じ管理アカウントで、後で作った方のアカウントでエラーが起きており、最初に作ったアカウントではうまく実行できました。
実際にエラーを修復した後で、再度試しましたが結果は同じでした。ユーザー違いだけです。2つのアカウントはどちらも Administrators のグループのみに属しており、正直なところなぜこのような差が出たかわかりません。
そのほか試したこと
さて、半日ほど悩んで調べたことを、メモとして残しておきます。
chkdsk c: /f
chkdsk は、ファイルシステムのエラーをチェックし、修復するためのプログラムで、私は、sfc /scannow とセットでいつも行っています。しかし異常は見つかりませんでした。
services.msc で、Windows Modules Installer を再起動
sfc が Windows Modules Installer のサービスに依存しているようで、このサービスが起動していないとエラーになるそうです。しかし、ダメでした。
DISM /Online /Cleanup-image /Restorehealth
DISM は Windows Update を使用して破損の修復に必要なファイルを提供してくれるらしいです。これもダメでした。
ICACLS C:\Windows\winsxs
ICACLS コマンドは、ファイルやフォルダのアクセス制御リストを表示、修正、バックアップ、復元したりできるそうです。でもダメでした。winsxs の権限がおかしいことが原因ではなさそうです。
と、半日ほど何をやっても sfc /scannow が使えませんでした。Windows再インストールかなと考えていたところ、管理アカウントが2つあることに気付き、念のため試したところ、なんと問題なく実行完了、無事エラー修復。その後、失敗していた管理アカウントで再実行するも、まだうまく動かず。という状況です。
2つのアカウントの違いはなさそうですが、何かわかればまた記事にします。