ある日突然Windows10が起動できなくなったときに試してみるコマンド総集編

目次

昨日まで動いていたのに今日突然起動不能になった

「もともと遅くて調子が良くなかったからついに壊れたか!?」と、昨日まで正常に動いていたWindwsパソコンが急に起動不能になることがあります。今回、知り合いの方から「パソコンが起動できなくて困っているで、どうにかして欲しい」と相談を受けました。

これが過去最高に手ごわい状況で、あらゆることを試したのですが直せず、結果リカバリすることになりました。後に同じことに遭遇してもいろいろやりすぎて何をやったのか思い出せそうにないので、大抵これをやれば直るというのをこれを機にまとめておきます。

よくある起動不能になる症状

今までたくさんのPCの修復をしてきて、急に起動できなくなったよくある症状は多い順で以下です。

  1. MBRまたはBCDの破損によるOS行方不明
  2. ハードディスクの不良セクタ発生によるシステム破損で起動途中のブルースクリーンや電源断
  3. Windows Updateの更新プログラムの不具合により起動途中で電源が落ちる
  4. 電源パーツの故障により通電しない

4.の電源パーツの故障は電源ボタンを押しても全く通電しないので、パーツ交換ですぐ直りますが、1~3は原因不明で突然起こり、電源は入るけど起動できない状況に陥ります。この症状が起こる原因は不明です。

修復作業をする前に見落としがちなこと

WindowsPEを起動するときには注意

修復はよくWindowsPE(Windows Preinstallation Environment)のスタートアップ修復やコマンドプロンプトを使います。WindowsPEはWindowsをインストールするための環境のことで、「Windowsインストールメディア」や「回復ドライブ」から起動して使います。以下のことを気を付けておかないとWindowsPEを起動できないので注意してください。

BIOS/MBRかUEFI/GPTを合わせる

「Windowsインストールメディア」または「回復ドライブ」がUSBメモリSDカードなどパーテーションが存在するメディアの場合、マザーボードの管理画面(BIOSまたはUEFI)で、BOOTに関するメニューBIOSUEFIに合わせえておく必要があります。メディアがMBRパーテーションならBIOSGPTパーテーションならUEFIとなります。

選択できるメニューにLegacy Only(BIOS)とかCSMUEFI 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

特にSYSTEMSOFTWAREが壊れることがあるみたいで、これの片方または両方を正常な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
初期化エラーが発生しました。
詳細については、ログ ファイルを確認してください。
イメージのサービス コンポーネントを閉じるときにエラーが発生しました。
数分間待ってからコマンドを再実行してください。

その他参考サイト

前へ

【Windows10】ロック画面を無効/非表示にしてサインイン画面にスキップする方法とレジストリ

次へ

AOMEI PE Builderから日本語化したWindowsPE環境を作る方法