ある日突然Windows10が起動できなくなったときに試してみるコマンド総集編
目次
昨日まで動いていたのに今日突然起動不能になった
「もともと遅くて調子が良くなかったからついに壊れたか!?」と、昨日まで正常に動いていたWindwsパソコンが急に起動不能になることがあります。今回、知り合いの方から「パソコンが起動できなくて困っているで、どうにかして欲しい」と相談を受けました。
これが過去最高に手ごわい状況で、あらゆることを試したのですが直せず、結果リカバリすることになりました。後に同じことに遭遇してもいろいろやりすぎて何をやったのか思い出せそうにないので、大抵これをやれば直るというのをこれを機にまとめておきます。
よくある起動不能になる症状
今までたくさんのPCの修復をしてきて、急に起動できなくなったよくある症状は多い順で以下です。
- MBRまたはBCDの破損によるOS行方不明
- ハードディスクの不良セクタ発生によるシステム破損で起動途中のブルースクリーンや電源断
- Windows Updateの更新プログラムの不具合により起動途中で電源が落ちる
- 電源パーツの故障により通電しない
4.の電源パーツの故障は電源ボタンを押しても全く通電しないので、パーツ交換ですぐ直りますが、1~3は原因不明で突然起こり、電源は入るけど起動できない状況に陥ります。この症状が起こる原因は不明です。
修復作業をする前に見落としがちなこと
WindowsPEを起動するときには注意
修復はよくWindowsPE(Windows Preinstallation Environment)のスタートアップ修復やコマンドプロンプトを使います。WindowsPEはWindowsをインストールするための環境のことで、「Windowsインストールメディア」や「回復ドライブ」から起動して使います。以下のことを気を付けておかないとWindowsPEを起動できないので注意してください。
BIOS/MBRかUEFI/GPTを合わせる
「Windowsインストールメディア」または「回復ドライブ」がUSBメモリやSDカードなどパーテーションが存在するメディアの場合、マザーボードの管理画面(BIOSまたはUEFI)で、BOOTに関するメニューをBIOSかUEFIに合わせえておく必要があります。メディアがMBRパーテーションならBIOS、GPTパーテーションならUEFIとなります。
選択できるメニューにLegacy Only(BIOS)とかCSM、UEFI Onlyとかあると思いますが、メディアがUEFIなのにマザーボード側がLegacy Only(BIOS)になっていると起動できないので、合わせておく必要があります。
Secure Bootをオフにする
上記と同じく、マザーボードの管理画面の中にSecure Bootという項目がどこかにあると思いますが、ここがEnable(有効)になっていると「Windowsインストールメディア」や「回復ドライブ」からWindowsPEを起動できないことがあるので、Disable(無効)に変更が必要です。修復が完了したら元のEnable(有効)に戻しておいてください。
Windowsのバージョンを合わせる
Windows PE自体のバージョンは修復したいWindowsとバージョン異なっていても大丈夫だったりしますが、Dismコマンドでイメージを使ってシステムを修復する場合、修復したいWindowsとイメージのバージョン(Windows 10 v1903 とか v1909とか)やエディション(Pro/Homeなど)が合っていないといけないので、特にインストールメディアのイメージを使用する場合は合わせておくことが必要です。適合したイメージを読み込むのであればWindows7や8.1のWindowsPEでも大丈夫かと思います。間違っていたらごめんなさい。
回復環境でのコマンドプロンプト起動方法
修復作業はWindowsPE上のコマンドプロンプトを使うことが多々あります。コマンドプロンプトはメニューから選ぶか、以下のショートカットキーでもきどうすることができます。
- Shift+F10
その他、回復環境でできることを簡単にまとめたページがありますので参考にしてください。
スタートアップ修復をするとき
MBRまたはBCDの修復でよく使うコマンド
電源ボタンを押して、起動を待っていると「Missing Operating System」(OSがみつかりません)というエラーが表示された場合はだいたいMBR(マスターブートレコード)またはBCD(Boot Configurations Data)の破損が原因でWindowsの入ったハードディスクは接続されているのに、BIOS上で起動したいWindowsが行方不明になっているという状況になります。これを直すにはWindowsPEのコマンドプロンプトで以下のコマンドを実行してMBRおよびBCDを修復します。
シンプルなコマンド例
このコマンドはWindows回復環境の「スタートアップ修復」を何度やっても失敗するときによく使うコマンドです。
bootrec /rebuildbcd bootrec /fixmbr bootrec /fixboot
このあとに「スタートアップ修復」を2~3回実行すると直ることが多いです。ちなみにGPTパーテーションの場合、bootrec /fixmbr
はエラーになるので不要。MBRパーテーションの場合は必要。
MBRの場合はパーテーションをアクティブにしてから行う場合
MBRの場合、Windowsの入ったシステムパーテーションをアクティブにしないとbootrecコマンドを実行しても「スタートアップ修復」がうまくいかない場合があります。そのときはDiskpartを使ってWindowsが入っているパーテーションをアクティブにしてからbootrecコマンドを実行し、その後「スタートアップ修復」を行うとうまくいく場合があります。これでかなりの起動不能なPCを直しました。
diskpart list disk (ドライブ番号を確認) select disk 0(ドライブ番号が0だった場合、sel disk 0 でもOK) list partition (システムパーテーション番号を確認 list part でもOK) select partition 3 (システムパーテーションの番号が3だった場合、sel part 3 でもOK) detail part (アクティブになっているか確認) acvtive exit bootrec /fixmbr bootrec /fixboot bootrec /rebuildbcd
このあとに「スタートアップ修復」を2~3回実行すると直ることが多いです。
参考サイト
上記でダメならBCDファイルを削除してからやってみる
これは試してみたことがありません。参考ページにあったので将来役に立つかもしれないのでメモ。
attrib -r -s -h c:\boot\bcd del c:\boot\bcd bcdboot c:\windows bootrec /fixmbr bootrec /fixboot bootrec /scanos bootrec /rebuildbcd
そして「スタートアップ修復」を2~3回実行する。
元のBCDファイルのバックアップやリネームをしておく場合のコマンド例
BCDファイルを削除するのが怖いときは以下のコマンドでBCDファイルのバックアップを取っておくと安心です。
バックアップの場合
bcdedit /export c:\backup
リネームの場合
ren BCD BCD.bak
参考サイト
それでもダメならシステム予約領域のBCDを削除してからやってみる
Windows 10の起動途中でブルー画面に「エラー: 0xc000000f」「PCは正しく起動できませんでした」などと表示される場合は以下コマンドで、システム予約領域にあるBCDファイル削除してから再構築してみる。システム予約領域はドライブレターが設定されていないので、Diskpartであらかじめシステム予約領域にドライブレターを設定してから削除します。
diskpart list vol (予約領域のボリューム番号を調べる 100~500MB程度のFATパーテーション) select vol 3 (ボリューム番号が3だった場合 sel vol 3 でもOK) assign letter=b (ドライブレターをBにする 別にBでなくてもよい) exit cd /d b: ren b:\EFI\Micrsoft\boot\BCD BCD.bak (または del bcd で削除するか format b: でフォーマット) bootrec /fixmbr(UEFI環境では不要かも) bootrec /fixboot bootrec /scanos bootrec /rebuildbcd sfc /scannow /offbootdir=b:\ /offwindir=c:\windows diskpart select vol 3 remove letter b(ドライブレター削除) exit 再起動
上記はドライブレターをB
に指定した例です。特に他のドライブレターと重複しなければ適当なアルファベット使っても大丈夫です。回復ドライブやインストールメディアから起動して実行した場合、再起動した後はドライブレターは解除されいるので、後からドライブレターの削除をする必要はありません。
bootrec /fixbootが「アクセスが拒否されました」となる場合
bootrec /fixboot
が「アクセスが拒否されました」となる場合は以下のいずれかのコマンド実行すると直る場合があります。これはフォーマットして空にシステム予約領域を再構築してくれるコマンドです。「アクセスが拒否されました」が直らなくてもう再起動したら正常に起動できる場合もあります。
bcdboot C:\Windows bcdboot C:\Windows /l ja-JP bcdboot C:\Windows /l ja-JP /s b: /f ALL bcdboot C:\Windows /l ja-JP /s b: /f UEFI
BCDファイルの中身を確認するコマンド
bcdedit /v
回復パーテーションが認識がされなくなった場合
余談ですが、BCDを修復すると回復パーテーション(WindowsRE/Windows回復環境)が認識されなくなります。その場合、以下のコマンドで復旧できます。ただし、WindowsPE環境では実行できません。正常に起動できるようになったら起動したWindows上で行ってください。
reagentc /info reagentc /enable reagentc /info
参考サイト
ここまでやってダメなら
ここまでのことをやってみて直らなかったらスタートアップ修復やMBR/BCD関連の不具合でないと思われます。
レジストリファイルが壊れている場合
まずは SFCコマンドを実行してみる
スタートアップ後の不具合となればシステムに異常があると思われますので、まずは以下のSFC(システムファイルチェッカー)でシステムに異常が無いかしらべてみてください。ファイルをスキャンおよび修復できます。
sfc /scannow
BootとWindowsのディレクトリが異なる場合は以下のようにディレクトリを指定して実行。
sfc /scannow /offbootdir=c:\ /offwindir=d:\windows
これは気休め程度のコマンドで、これで不具合見つかったことや、修復がうまくいいったことがほとんど無く、役に立ったことがないのですが、これで異常が見つかったときはかなり重症だと思った方がいいです。
Config内のファイルを上書きしてみる
C:\Windows\System32\config
に以下のファイルがあります。このファイルはそれぞれレジストリが格納されているようです。Windows起動時に使用されるファイルでこれが壊れているとOS起動途中にブルーのエラー画面が表示されます。
- COMPONENTS
- DEFAULT
- SAM
- SECURITY
- SOFTWARE
- SYSTEM
特にSYSTEM、SOFTWAREが壊れることがあるみたいで、これの片方または両方を正常なWindowsPCからコピーして再起動したら直ることがあるらしいです。いきなり全部の上書きはせず、一つ一つブルー画面のヒントを素にコピーしてみてください。COMPONENTS
はWindows Updateの関連みたいで、これを上書きするという参考ページはあまり見かけなかったので、不要かもしれません。
コマンドで上書きする例
正常なWindowsからコピーしてきた各ファイルがFドライブだった場合を例にしています。
cd /d c:\Windows\System32\config ::既存のファイルをリネームしてバックアップ ren COMPONENTS COMPONENTS.bak ren DEFAULT DEFAULT.bak ren SAM SAM.bak ren SECURITY SECURITY.bak ren SOFTWARE SOFTWARE.bak ren SYSTEM SYSTEM.bak ::正常なWindowsから取ってきたものをコピー(Fドライブからコピーする場合) copy F:\Windows\system32\config\COMPONENTS COMPONENTS copy F:\Windows\system32\config\DEFAULT DEFAULT copy F:\Windows\system32\config\SAM SAM copy F:\Windows\system32\config\SECURITY SECURITY copy F:\Windows\system32\config\SOFTWARE SOFTWARE copy F:\Windows\system32\config\SYSTEM SYSTEM
参考サイト
Dismコマンドでシステムを修復してみる
システムが破損しているか確認する
確認は比較的すぐ終わります。
Dism /Image:c:\ /Cleanup-Image /ScanHealth
※今回、WindowsPE環境からオフラインでCドライブを修復しようとしているので/Image:c:\
としていますが、起動中のWindows上からDismコマンドを実行いする場合はここは/online
と指定します。
修復できるか調べる
正常・修復可能・不可能かがわかります。
Dism /Image:c:\ /Cleanup-Image /CheckHealth
イメージの修復
Dism /Image:C:\ /Cleanup-Image /RestoreHealth
スクラッチディレクトリのサイズが不足と警告が出たら
Dism /Image:c:\ /Cleanup-Image /RestoreHealth /ScratchDir:f:\
イメージファイルを使用して修復する場合
イメージはインストールメディアのsource
フォルダにあるinstall.win
またはinstall.esd
ファイルを使用します。別のメディアにinstall.win
をコピーして使用する場合、「読み取り専用」の属性を外しおかないとエラーになることがあるようです。
修復イメージとしてinstall.wimを使用したコマンド例
Dism /Image:c:\ /Cleanup-Image /RestoreHealth /Source:WIM:F:\sources\install.wim:1 /ScratchDir:f:\
修復イメージとしてinstall.esdを使用したコマンド例
Dism /Image:c:\ /Cleanup-Image /RestoreHealth /Source:ESD:F:\sources\install:1 /ScratchDir:f:\
install.wimからProやHomeなどバージョンやインデックス番号を調べる方法
Windowsのインストールメディアによって、Windows 10 Proのはinstall:1
、Homeの場合はinstall:2
だったりします。Enterpriseなどが含まれているメディアなど、インデックス番号が異なるので、以下のコマンドを使ってインストールメディア内のinstall.wim
またはinstall.esd
から詳細を調べることができます。
::インデックス番号を調べる Dism /Get-wiminfo /wimfile:D:\sources\install.wim Dism /Get-ImageInfo /ImageFile:D:\sourcesinstall.esd ::番号から詳細を調べる Dism /Get-wiminfo /wimfile:D:\sources\install.wim /index:1 Dism /Get-wiminfo /wimfile:D:\sources\install.wim /index:2
イメージを一旦マウントして修復する場合
マウントとはWIM(イメージファイル)を指定のフォルダに展開して普通にフォルダやファイルが見えるようにするものです。
mkdir c:\mount(または md c:\mount ) Dism /Mount-Image /ReadOnly /ImageFile:h:\sources/install.wim /index:2 /MountDir:c:\mount /ScratchDir:f:\ Dism /Image:c:\ /Cleanup-Image /RestoreHealth /Source:c:\mount\windows /ScratchDir:f:\
mkdir c:\mount(または md c:\mount ) Dism /Apply-Image /ImageFile:h:\sources/install.wim /index:2 /MountDir:c:\mount Dism /Image:c:\ /Cleanup-Image /RestoreHealth /Source:c:\mount\windows /ScratchDir:f:\
マウントせず修復するコマンド
どういうときに使うのかいまいちよくわからないのですが、イメージ変更中にイメージが破損することがあり、それを修復するコマンドだそうです。Dism /Cleanup-Mountpoints
マウント解除とマウントフォルダを削除するコマンド
Dism /Unmount-Image /MountDir:c:\mount /discard rmdir c:\mount(または rd c:\mount )
正常なWindowsからWindowsフォルダを持ってくる方法
正常に動作しているWindowsのパソコンからWindowsフォルダをc:\mount
にコピーして使う場合。
Dism /Image:c:\ /Cleanup-Image /RestoreHealth /Source:C:\mount\windows
起動時に邪魔をするコンポーネントがないか確認
Dism /Image:c:\ /Cleanup-Image /AnalyzeComponentStore /ScratchDir:f:\
起動時に邪魔をするコンポーネントを削除
Windowsは更新ファイルをWinSxSフォルダに残すようです。WinSxSフォルダにある古くて利用されていない更新ファイルをこのコマンドによって削除することができます。
Dism /Image:c:\ /Cleanup-Image /StartComponentCleanup /ScratchDir:f:\ Dism /Image:c:\ /Cleanup-Image /StartComponentCleanup /ResetBase /ScratchDir:f:\ cleanmgr.exe /D C: /VERYLOWDISK /SETUP
またはそのコンポーネントを保留する
Dism /Image:c:\ /Cleanup-Image /revertpendingactions /ScratchDir:f:\
参考サイト
Windows Updateの更新ファイルの不具合が怪しいとき
最近の月例パッチや更新プログラムに不具合が多く、自動で適用されるから仕方がないのですが、適用したが故に起動できなくなる状況に陥ることがあります。その場合は直近で適用された更新プログラムを調べてDISMコマンドで削除することができます。そのやり方は以下が参考になります。
レジストリで「保留中の更新プログラム」を止める
reg load HKLM\temp C:\windows\system32\config\software reg delete "HKLM\temp\Microsoft\Windows\CurrentVersion\Component Based Servicing\SessionsPending" /v Exclusive reg unload HKLM\temp
AutoRunが怪しいとき
起動を阻害するAutoRunのプログラムがある場合、マイクロソフトのAutoRunsというアプリが役に立ちそうです。ダウンロードしてUSBメモリなどに保存し、WindowsPE環境から呼び出すことができるようです。これで何か阻害しているものがあれば一時的に無効化したり、削除できるので解決できるかもしれません。
どれも失敗したらあきらめてリカバリ
どのDismコマンドを試して修復を試みても以下のようなエラーが出る場合は修復をあきらめてクリーンインストールをするしか方法がないと思われます。
エラー 2
初期化エラーが発生しました。
詳細については、ログ ファイルを確認してください。
イメージのサービス コンポーネントを閉じるときにエラーが発生しました。
数分間待ってからコマンドを再実行してください。
その他参考サイト