忙しい人向け
- sfc /scannow /offbootdir=c: /offwindir=c:\windows
- chkdsk /r c:
- dism /image:c:\ /cleanup-image /restorehealth /scratchdir=c:
- bcdboot c:\windows /l ja-JP /s b: /f UEFI
- reagentc /setreimage /path r:\Recovery\WindowsRE /target C:\Windows
- reagentc /enable /osguid {00000000-0000-0000-0000-000000000000}
Windows10/11のシステム修復
Windowsとは壊れやすいものです。普通に使っていたのにアップデートで起動しなくなったり、宇宙から降ってきた微粒子に当たって起動しなくなったり。
Microsoftは壊れたWindowsを修復するための手段をあらかじめ用意しています。例えば、クソの役にも立ちやしないシステムの復元やスタートアップ修復など。REが起動することでどうにかしてくれます。
それで治らなければ、コマンドプロンプトから高度な復旧を行うことになる。以下、その手順。
ちなみに、BTO系のPCショップに持ち込めば、システム復旧とかシステムの修復とかいった名称で1万円から3万円程度でやってもらえる。保証内でも有償対応。家電量販だとまずしてくれない。
基本の修復フロー
- Windows更新プログラムのアンインストール
- システムの復元
- チェックディスク (chkdsk)
- システムファイルチェッカーツール (SFC.exe)
- Windowsシステム展開ツール (DISM.exe)
- BCD領域の復旧
- RE環境の再設定
- ドライバの手動削除
- レジストリの書き戻し
前半はアフィリエイト狙いの薄っぺらい量産型コピペ記事とほとんど同じ内容なので、ある程度慣れている人は読み飛ばしていただいて結構。
Windows更新プログラムのアンインストール
Microsoft Docs先生によると、更新プログラムの失敗で起動しなくなったときはアンインストールすることで起動できるようになることがある(らしい)
Windows RE(回復環境)の場合、最新の更新プログラムのアンインストールを選ぶと自動的に削除される。
PEやインストールメディアの場合はコマンドプロンプトから実行。
1 |
dism /image:C:\ /cleanup–image /revertpendingactions |
ただし、Windowsシステムが壊れているとこの作業は失敗する。
システムの復元
復元ポイントの構成を行っていた場合、HDD上にシステムの重要なファイルを自動でバックアップして書き戻しができるようになる。
ただし、バックアップファイルが一部でも壊れていると失敗する。正規のやり方では正常な部分だけ使用するとかができない。
チェックディスク (Chkdsk)
ここから先はすべてコマンドプロンプトでの作業になる。
1 |
chkdsk /f c: |
チェックディスクでNTFSファイルシステムを修復できる。機械的な不良を治すのではなく、あくまでソフトウェア的な不具合を修復する。
問題のあるファイルを治そうと試みて、治せないなら削除する。不良セクタにかかっているなら除外して別の場所に再配置するなどなど。
一部のファイルが消えるリスクを伴うのと、レジストリハイブが不漁だったときなんかは逆効果のこともある。
Acronisのようなクローンソフトを使った後、オリジナルも起動できなくなったとかはこれで治せることが多い。
システムファイルチェッカーツール (SFC.exe)
1 |
sfc /scannow /offbootdir=c: /offwindir=c:\window\ |
Windowsのシステムファイルが正しいものか判断する。正しくない場合はバックアップから置き換える。
ちなみに置き換えの参照元は”%Systemroot%\System32\Dllcache”なので、これが壊れていると失敗する。
Windowsアップデートやユーザーによる変更には作用しない。つまりドライバ不具合やレジストリが壊れている場合効果はない。
chkdskによる破損、あるいはウイルスなどに書き換えられた場合に効果あり。
Windowsシステム展開ツール (DISM.exe)
1 |
DISM /image:c:\ /cleanup–image /restorehealth /scratchdir:c:\ |
インターネット接続が必要。Windows PEにネットワークサービスを組み込むか、通常のWindowsPCに外付けで繋いで実行する。
インターネット接続しない場合も、独自のソースファイルを指定することで実行できるが、Windowsのバージョンを完全に一致させる必要があるため、企業利用などでバックアップイメージをとっていない場合は現実的でない。
ソースファイルからシステムファイルを取得して置き換える。sfcで復元できない場合でも復旧できることがある。
レジストリが壊れていると失敗する。その場合は下記のレジストリの書き戻しになる。
BCD領域の復旧
1 |
bcdboot c:\windows /l ja–JP /s b: /f ALL |
ここまでのSFCとDISM復旧ですべて正常終了しているのに、起動しない場合はBブート領域破損の疑いがある。
インストールディスクがMBRかGPTかで手順が大きく異なる。
何故かよく検索で出てくるが、GPTの場合、”bootrec /fixboot”は意味がない。
BCD領域そのものをフォーマットして作り直した方が早い。
REが起動しないでSTOPコードだけが表示されるパターンはだいたいこれ。
ちなみにBCDの問題はLinuxのデュアルブートを設定すると起こりやすい。BCDを再構築すると、Grubが消えるなど後処理が複雑になるため、極力デュアルブートはしないに越したことはない。
ドライバの手動削除
Windows7からアップデートしたdynabookで頻繁に見た症状で、特定のドライバファイルが不具合を起こしていて起動しないパターンがある。
「C:\Windows\System32\drivers」「C:\Windows\SysWOW64\drivers」の中にドライバファイルが保存されていて、Microsoft標準ドライバ以外は消しても起動する。
特にdynabookは「tvalz_o.sys」を削除することで起動したパターンが多い。軽く調べた感じだとWindows 7用のドライバなので、クリーンインストールせずに残っていると不具合の温床なのかもしれない。
レジストリの書き戻し
ここまでの作業はシステムの復元以外、すべてレジストリが正常であることを前提としている。しかし「構成レジストリデータベースが壊れています」のエラーが出ている場合、いずれも意味がない。
Windows10 ver.1709以前ならレジストリの自動バックアップがあるのだが、ver.1803以降のバージョンでは停止している。Microsoftはシステムの復元で代用可能とアナウンスしているものの、先述の通りアプリのバックアップがおかしいだけでも失敗するので、レジストリだけが欲しいことがある。
システムの復元の実体あるいは正体は、ボリュームのシャドウコピー。Windows7以前はSystem Volume Information内に直接アクセスできたが、Windows10からはバイナリ化されているようでvssadminでアクセスする模様。
1 2 3 |
vssadmin list shadows mklink c:\shadows1 \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1 cd c:\shadows1\windows\system32\config |
まとめ
備忘録的なものなので、具体的な手順はまた後日加筆修正予定。
かなり文量が多くなるので、別ページにするかも
コメントを残す