UEFIシステムで換装前後のドライブはどちらもGPT形式。
直し方は次の通り。
1. 回復ドライブやWindowsのインストールメディアなどでWindowsを起動する
2. [コンピューターを修復する] – [トラブルシューティング] – [詳細オプション] – [コマンドプロンプト]を開く
3. DISKPARTコマンドで起動用パーティションにドライブ文字を割り当てる
X:\Windows\System32> DISKPART
DISKPART> LIST VOLUME
← ボリューム一覧/パーティション番号一覧を表示する
DISKPART> SELECT VOLUME <n>
← n=FAT32領域のドライブ番号(EFIシステムパーティション)
DISKPART> ASSIGN
← 空いているドライブ文字を割り当てる【要記録:仮にSとする】
DISKPART> EXIT
← 終了
4. BOOTRECコマンドとBCDBOOTコマンドでBCDを再作成する
S:> CD /D S:\EFI\Microsoft\Boot
← Boot Configuration Data(BCD)が保存されたフォルダーに移動する
S:> DEL BCD
← 「BCD」というファイルを削除する
S:> BOOTREC /RebuildBcd
← Windowsのインスタンスを検索してBCDを作り直す(Windowsのインスタンスを登録するか聞いてくるので、y/n/aで答える)
S:> BOOTREC /FixBoot
← ブートセクターを修復する(「アクセスが拒否されました」エラーが発生しても無視する)
S:> BCDBOOT <Windowsのインストールされたドライブ>:\Windows /L ja-JP /S S:
← Windowsフォルダーから指定のドライブに、起動ファイル一式をコピーする
5. Windowsを再起動する
6. 上の「BOOTREC /RebuildBcd」コマンド実行時に不要なWindowsのインスタンス(ここでは例としてWindows.oldとする)を追加してしまった場合は、起動時のOS選択が面倒なので次の手順で削除するとよい
※心配なら先に「Bcdedit /export <ファイル名>」をやっておく。「Bcdedit /import <ファイル名> /clean」で復元可能
6.1 コマンドプロンプトを管理者モードで起動して「Bcdedit」コマンドを実行する
6.2 「Windows ブート ローダー」の中から、「path」が「\Windows.old\system32\winload.exe」のエントリーを見つけて、「identifier」の文字列をコピーする
6.3 「Bcdedit /delete <コピーしたID>」コマンドを実行する
6.4 コマンドプロンプトを閉じる