bootrec.exe(Boot Recovery Executable)是 Vista 之后引入、WinRE / 安装介质命令行专属引导修复工具,核心面向 Legacy BIOS+MBR 引导修复;UEFI-GPT 场景能力很有限,不能替代 bcdboot
bootrec.exe(Boot Recovery Executable)完整解构
前置:bootrec 是 Vista 之后引入、WinRE / 安装介质命令行专属引导修复工具,核心面向 Legacy BIOS+MBR 引导修复;UEFI-GPT 场景能力很有限,不能替代 bcdboot。 固定结构:底层原理|依赖文件|依赖关系|逻辑链路|配套链|边界
一、底层原理
bootrec.exe 本质是用户态封装调度程序,不内置底层扇区读写、BCD 解析完整实现,依靠系统提供的磁盘接口、BCD 相关底层 API 完成 4 个子功能:
/FixMbr:向磁盘 LBA0 写入标准 Windows MBR 引导代码,保留原有分区表,只修复引导代码损坏;/FixBoot:在活动分区写入 PBR 分区引导代码,PBR 的作用是后续加载 bootmgr.exe;/ScanOs:遍历系统所有磁盘卷,扫描识别存在的 Windows 安装实例,缓存候选系统信息;/RebuildBcd:读取扫描到的 Windows 实例,批量写入\Boot\BCD引导数据库。
关键区分:
- MBR:磁盘 0 扇区,BIOS 执行,定位活动分区
- PBR:活动分区首扇区,加载 bootmgr.exe
- BCD:
\Boot\BCD,引导配置数据库(替代 XP boot.ini)- UEFI+GPT:磁盘头部是保护性 MBR,
/fixmbr无实际引导价值;bootrec 无法自动部署 ESP 里的 bootmgfw.efi
二、依赖文件
| 文件 | 路径 & 作用 |
|---|---|
| bootrec.exe | X:\Sources\bootrec.exe(WinRE 内存盘 X:,运行主体) |
| bcd 相关系统 API | 内部调用 BCD 原生 API,底层依赖同 bcdedit |
| vds.dll / vdsbas.dll | VDS 虚拟磁盘服务,提供磁盘枚举、原始扇区读写接口 |
| disk.sys / partmgr.sys | 内核磁盘栈驱动,完成底层磁盘 I/O |
| ntfs.sys / fastfat.sys | 文件系统驱动,读取 / 写入 BCD 数据库 |
| bootmgr.exe | Legacy 模式最终引导程序(修复后依赖它正常启动) |
| winre.wim | WinRE 环境基础镜像,bootrec 运行宿主 |
补充:普通在线 Windows 系统虽然自带 bootrec.exe,但系统分区被独占锁定,扇区写入、BCD 重建经常失败,微软官方推荐WinRE / 安装介质环境执行。
三、依赖关系
3.1 整体调用链路
用户执行 bootrec /xxx
↓
bootrec → VDS虚拟磁盘服务 → 内核磁盘驱动(disk/partmgr)
↓
分支1:/FixMbr /FixBoot → 直接写入磁盘扇区(MBR/PBR引导代码)
分支2:/ScanOs → 遍历卷,识别有效Windows
分支3:/RebuildBcd → 调用BCD API写入\Boot\BCD
分支 1:bootrec /fixmbr
bootrec → VDS → disk.sys → 写入磁盘LBA0标准MBR代码 → 分区表不变
分支 2:bootrec /fixboot(Legacy)
bootrec → VDS → 校验分区标记【活动】→ 写入分区PBR引导代码 → PBR指向bootmgr.exe
分支 3:bootrec /rebuildbcd
bootrec → 扫描所有卷 → 识别Windows安装目录 → 生成BCD条目 → 写入\Boot\BCD
3.2 前置依赖
- 环境依赖:最优环境为 WinRE / 安装介质命令提示符;在线系统权限与文件锁会限制能力
- Legacy BIOS+MBR:必须存在标记为活动的主分区,否则
/fixboot失败 - UEFI+GPT:必须已有 ESP 分区;bootrec 不能自动创建 ESP、不能修复丢失的 bootmgfw.efi
- 磁盘驱动正常:partmgr、disk 驱动正常加载,能够枚举磁盘、原始扇区读写
- 文件系统完好:存放 BCD 的分区 NTFS/FAT 不能严重损坏
3.3 互斥 & 叠加约束
/FixMbr、/FixBoot相互独立,可单独执行,也可组合;/ScanOs只探测、不会自动修改 BCD,必须搭配/RebuildBcd才持久写入;- BCD 本身文件损坏但分区完好 → rebuildbcd 可修复;分区文件系统损坏 → bootrec 无效;
- BitLocker 加密卷未解锁时,无法读取分区与 BCD,修复失败。
四、逻辑链路
链路 1:Legacy BIOS+MBR 完整修复标准流程
flowchart LR
A[WinRE命令行] --> B[bootrec /fixmbr 重写磁盘0 MBR引导代码]
B --> C[bootrec /fixboot 写入活动分区PBR]
C --> D[bootrec /scanos 扫描磁盘识别Windows]
D --> E[bootrec /rebuildbcd 重建BCD引导库]
E --> F[bootmgr读取BCD,正常启动系统]
链路 2:UEFI GPT 场景(能力边界体现)
flowchart LR
A[bootrec /fixmbr] --> B[仅改写保护性MBR,无引导作用]
A --> C[bootrec /fixboot] --> D[无法识别ESP,基本失效]
A --> E[bootrec /rebuildbcd] --> F[仅可修复ESP内BCD,不能恢复bootmgfw.efi]
五、配套链
✅ 配套引导工具横向分工
| 工具 | 核心用途 |
|---|---|
| bcdboot.exe | UEFI 首选,自动部署 bootmgfw.efi、重建 BCD(bootrec 无法替代) |
| bcdedit.exe | BCD 精细手动编辑、单条增删引导项 |
| diskpart.exe | 设置分区活动、挂载 ESP 盘符、修复分区结构 |
| bootsect.exe | 单独重写 PBR 引导代码 |
| chkdsk | 提前校验分区文件系统完整性 |
✅ 标准修复命令模板
:: Legacy MBR完整修复
bootrec /fixmbr
bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd
:: UEFI GPT 优先使用bcdboot,而不是bootrec
bcdboot C:\Windows /s S: /f UEFI
✅ 排查配套操作
:: diskpart查看分区状态
diskpart
list disk
list partition
:: 查看BCD内容
bcdedit /enum all
六、边界(能力上限、局限性、适用边界)
✅ 能力上限
- Legacy BIOS+MBR 场景一站式修复 MBR、PBR、BCD 三类引导故障,上手简单;
- 自动扫描全磁盘 Windows 实例,批量重建 BCD,省去手动 bcdedit 添加条目;
- 仅修改引导扇区与 BCD 数据库,不会修改用户数据、系统核心文件。
❌ 核心局限
- UEFI+GPT 场景能力极弱,不能创建 ESP、不能恢复缺失的 bootmgfw.efi,/fixmbr 无效;
- 无法修复文件系统损坏、ntoskrnl/winload 等系统核心文件丢失;
- 不支持动态磁盘、BitLocker 未解锁加密磁盘;
- 仅适配微软原生 Windows 引导链,无法修复 GRUB 等第三方多引导;
- 在线系统执行容易因为文件锁定导致修复失败。
📌 适用边界
✅ Legacy BIOS + MBR 老设备:MBR 损坏、PBR 损坏、BCD 丢失 / 损坏 ✅ 快速批量重建 BCD 引导条目 ❌ UEFI GPT 新机引导修复(优先 bcdboot)、BitLocker 加密系统、系统文件损坏、第三方多引导
补充横向速查表
| 工具 | MBR 修复 | PBR 修复 | BCD 重建 | UEFI ESP 文件部署 |
|---|---|---|---|---|
| bootrec.exe | ✅ | ✅ | ✅ | ❌ |
| bcdboot.exe | ❌ | ❌ | ✅ | ✅ |
| bcdedit.exe | ❌ | ❌ | ✅ | ❌ |
| bootsect.exe | ✅ | ✅ | ❌ | ❌ |




bootrec /?
修复关键磁盘结构。支持以下命令:
/FixMbr -- 使用与 Windows 兼容的主启动记录写入系统分区的主启动记录。此操作不会覆盖现有的分区表。
/FixBoot -- 使用与 Windows 兼容的启动扇区向系统分区上写入一个新的启动扇区。
/ScanOs -- 在所有磁盘中扫描与 Windows 兼容的安装,并显示当前不位于启动配置存储中的条目。
/RebuildBcd -- 在所有磁盘中扫描与 Windows 兼容的安装,并允许用户选择要添加到启动配置存储中的条目。
修复 UEFI 引导问题,您可以使用批处理文件(.cmd)或 PowerShell 脚本来执行一些基本的修复步骤。以下是两种方法的示例。
方法 1:使用批处理文件 (.cmd)
您可以创建一个批处理文件,执行以下命令来修复 UEFI 引导:
@echo off
echo 修复 UEFI 引导...
:: 确保以管理员身份运行
if not "%1"=="runas" (
echo 以管理员身份重新启动...
powershell -Command "Start-Process '%~f0' -ArgumentList 'runas' -Verb RunAs"
exit /b
)
:: 修复引导
bcdedit /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi
bcdedit /set {default} device partition=C:
bcdedit /set {default} osdevice partition=C:
bcdedit /set {default} path \Windows\System32\winload.efi
:: 更新引导配置
bcdboot C:\Windows /l zh-CN /s S: /f UEFI
echo 引导修复完成。
pause
方法 2:使用 PowerShell 脚本
您也可以使用 PowerShell 脚本来执行相同的操作。以下是一个示例脚本:
# 确保以管理员身份运行
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
exit
}
Write-Host "修复 UEFI 引导..."
# 修复引导
bcdedit /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi
bcdedit /set {default} device partition=C:
bcdedit /set {default} osdevice partition=C:
bcdedit /set {default} path \Windows\System32\winload.efi
# 更新引导配置
bcdboot C:\Windows /l zh-CN /s S: /f UEFI
Write-Host "引导修复完成。"
使用说明
-
创建文件:
- 将上述代码复制到文本编辑器中,并分别保存为
fix_boot.cmd或fix_boot.ps1。
- 将上述代码复制到文本编辑器中,并分别保存为
-
运行文件:
- 右键点击文件,选择“以管理员身份运行”。
注意事项
- 确保您在执行这些命令之前备份重要数据。
- 这些命令假设 Windows 安装在 C: 驱动器上,并且 EFI 系统分区是 S:。请根据实际情况调整驱动器字母。
增强版的批处理文件或 PowerShell 脚本来修复 UEFI 引导问题,我们可以添加更多的错误处理、日志记录和用户提示。以下是更为全面的示例。
增强版批处理文件 (.cmd)
@echo off
setlocal enabledelayedexpansion
echo 正在修复 UEFI 引导...
:: 确保以管理员身份运行
if not "%1"=="runas" (
echo 以管理员身份重新启动...
powershell -Command "Start-Process '%~f0' -ArgumentList 'runas' -Verb RunAs"
exit /b
)
:: 日志文件
set LOGFILE=%TEMP%\uefi_repair_log.txt
echo 修复开始时间: %DATE% %TIME% > %LOGFILE%
:: 检查系统分区
set SYSTEM_PARTITION=S:
for /f "tokens=2" %%i in ('mountvol ^| findstr /i "EFI"') do set SYSTEM_PARTITION=%%i
echo 检测到 EFI 系统分区: %SYSTEM_PARTITION% >> %LOGFILE%
:: 修复引导
bcdedit /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi >> %LOGFILE% 2>&1
if errorlevel 1 (
echo 修复引导失败,请检查日志文件。 >> %LOGFILE%
echo 引导修复失败。
exit /b
)
bcdedit /set {default} device partition=C: >> %LOGFILE% 2>&1
bcdedit /set {default} osdevice partition=C: >> %LOGFILE% 2>&1
bcdedit /set {default} path \Windows\System32\winload.efi >> %LOGFILE% 2>&1
:: 更新引导配置
bcdboot C:\Windows /l zh-CN /s %SYSTEM_PARTITION% /f UEFI >> %LOGFILE% 2>&1
if errorlevel 1 (
echo 更新引导配置失败,请检查日志文件。 >> %LOGFILE%
echo 引导配置更新失败。
exit /b
)
echo 引导修复完成。 >> %LOGFILE%
echo 修复完成,日志文件位于: %LOGFILE%
pause
增强版 PowerShell 脚本
# 确保以管理员身份运行
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
exit
}
$logFile = "$env:TEMP\uefi_repair_log.txt"
"修复开始时间: $(Get-Date)" | Out-File -FilePath $logFile -Encoding utf8
# 检查系统分区
$systemPartition = (Get-Volume | Where-Object { $_.FileSystemLabel -eq "EFI" }).DriveLetter + ":"
if (-not $systemPartition) {
$systemPartition = "S:"
}
"检测到 EFI 系统分区: $systemPartition" | Out-File -FilePath $logFile -Append -Encoding utf8
# 修复引导
try {
bcdedit /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi | Out-File -FilePath $logFile -Append -Encoding utf8
bcdedit /set {default} device partition=C: | Out-File -FilePath $logFile -Append -Encoding utf8
bcdedit /set {default} osdevice partition=C: | Out-File -FilePath $logFile -Append -Encoding utf8
bcdedit /set {default} path \Windows\System32\winload.efi | Out-File -FilePath $logFile -Append -Encoding utf8
# 更新引导配置
bcdboot C:\Windows /l zh-CN /s $systemPartition /f UEFI | Out-File -FilePath $logFile -Append -Encoding utf8
"引导修复完成。" | Out-File -FilePath $logFile -Append -Encoding utf8
} catch {
"修复过程中发生错误: $_" | Out-File -FilePath $logFile -Append -Encoding utf8
Write-Host "引导修复失败,请检查日志文件。"
exit
}
Write-Host "修复完成,日志文件位于: $logFile"
使用说明
-
创建文件:
- 将上述代码分别复制到文本编辑器中,并保存为
enhanced_fix_boot.cmd或enhanced_fix_boot.ps1。
- 将上述代码分别复制到文本编辑器中,并保存为
-
运行文件:
- 右键点击文件,选择“以管理员身份运行”。
注意事项
- 请确保在执行这些命令之前备份重要数据。
- 这些命令假设 Windows 安装在 C: 驱动器上,并且 EFI 系统分区会自动检测。请根据实际情况调整。
批处理文件(.cmd)或 PowerShell 脚本来修复 UEFI 引导问题。这些脚本将执行必要的命令来重新配置引导设置,并确保系统能够正常启动。
方法 1:批处理文件 (.cmd)
以下是一个增强版的批处理文件示例,包含错误处理和日志记录功能:
@echo off
setlocal enabledelayedexpansion
echo 正在修复 UEFI 引导...
:: 确保以管理员身份运行
if not "%1"=="runas" (
echo 以管理员身份重新启动...
powershell -Command "Start-Process '%~f0' -ArgumentList 'runas' -Verb RunAs"
exit /b
)
:: 日志文件
set LOGFILE=%TEMP%\uefi_repair_log.txt
echo 修复开始时间: %DATE% %TIME% > %LOGFILE%
:: 检查系统分区
for /f "tokens=2" %%i in ('mountvol ^| findstr /i "EFI"') do set SYSTEM_PARTITION=%%i
if not defined SYSTEM_PARTITION (
echo 未找到 EFI 系统分区,请检查系统设置。 >> %LOGFILE%
echo 错误:未找到 EFI 系统分区。
exit /b
)
echo 检测到 EFI 系统分区: %SYSTEM_PARTITION% >> %LOGFILE%
:: 修复引导
bcdedit /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi >> %LOGFILE% 2>&1
if errorlevel 1 (
echo 修复引导失败,请检查日志文件。 >> %LOGFILE%
echo 引导修复失败。
exit /b
)
bcdedit /set {default} device partition=C: >> %LOGFILE% 2>&1
bcdedit /set {default} osdevice partition=C: >> %LOGFILE% 2>&1
bcdedit /set {default} path \Windows\System32\winload.efi >> %LOGFILE% 2>&1
:: 更新引导配置
bcdboot C:\Windows /l zh-CN /s %SYSTEM_PARTITION% /f UEFI >> %LOGFILE% 2>&1
if errorlevel 1 (
echo 更新引导配置失败,请检查日志文件。 >> %LOGFILE%
echo 引导配置更新失败。
exit /b
)
echo 引导修复完成。 >> %LOGFILE%
echo 修复完成,日志文件位于: %LOGFILE%
pause
方法 2:PowerShell 脚本
以下是一个增强版的 PowerShell 脚本示例,包含错误处理和日志记录功能:
# 确保以管理员身份运行
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
exit
}
$logFile = "$env:TEMP\uefi_repair_log.txt"
"修复开始时间: $(Get-Date)" | Out-File -FilePath $logFile -Encoding utf8
# 检查系统分区
$systemPartition = (Get-Volume | Where-Object { $_.FileSystemLabel -eq "EFI" }).DriveLetter + ":"
if (-not $systemPartition) {
Write-Host "未找到 EFI 系统分区,请检查系统设置。" | Out-File -FilePath $logFile -Append -Encoding utf8
exit
}
"检测到 EFI 系统分区: $systemPartition" | Out-File -FilePath $logFile -Append -Encoding utf8
# 修复引导
try {
bcdedit /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi | Out-File -FilePath $logFile -Append -Encoding utf8
bcdedit /set {default} device partition=C: | Out-File -FilePath $logFile -Append -Encoding utf8
bcdedit /set {default} osdevice partition=C: | Out-File -FilePath $logFile -Append -Encoding utf8
bcdedit /set {default} path \Windows\System32\winload.efi | Out-File -FilePath $logFile -Append -Encoding utf8
# 更新引导配置
bcdboot C:\Windows /l zh-CN /s $systemPartition /f UEFI | Out-File -FilePath $logFile -Append -Encoding utf8
"引导修复完成。" | Out-File -FilePath $logFile -Append -Encoding utf8
} catch {
"修复过程中发生错误: $_" | Out-File -FilePath $logFile -Append -Encoding utf8
Write-Host "引导修复失败,请检查日志文件。"
exit
}
Write-Host "修复完成,日志文件位于: $logFile"
使用说明
-
创建文件:
- 将上述代码分别复制到文本编辑器中,并保存为
fix_boot.cmd或fix_boot.ps1。
- 将上述代码分别复制到文本编辑器中,并保存为
-
运行文件:
- 右键点击文件,选择“以管理员身份运行”。
注意事项
- 确保在执行这些命令之前备份重要数据。
- 这些命令假设 Windows 安装在 C: 驱动器上,并且 EFI 系统分区会自动检测。请根据实际情况调整驱动器字母。
批处理文件(.cmd)或 PowerShell 脚本来修复 BCD(Boot Configuration Data)。这些脚本将执行必要的命令来重建或修复 BCD,以解决启动问题。
方法 1:使用批处理文件 (.cmd)
以下是一个用于修复 BCD 的批处理文件示例:
@echo off
setlocal enabledelayedexpansion
echo 正在修复 BCD...
:: 确保以管理员身份运行
if not "%1"=="runas" (
echo 以管理员身份重新启动...
powershell -Command "Start-Process '%~f0' -ArgumentList 'runas' -Verb RunAs"
exit /b
)
:: 创建日志文件
set LOGFILE=%TEMP%\bcd_repair_log.txt
echo 修复开始时间: %DATE% %TIME% > %LOGFILE%
:: 备份现有 BCD
echo 备份现有 BCD... >> %LOGFILE%
bcdedit /export C:\BCD_Backup.bak >> %LOGFILE% 2>&1
if errorlevel 1 (
echo 备份失败,请检查日志文件。 >> %LOGFILE%
exit /b
)
:: 删除现有 BCD
echo 删除现有 BCD... >> %LOGFILE%
del C:\boot\bcd >> %LOGFILE% 2>&1
:: 重建 BCD
echo 重建 BCD... >> %LOGFILE%
bcdboot C:\Windows /l zh-CN /s C: /f ALL >> %LOGFILE% 2>&1
if errorlevel 1 (
echo 重建 BCD 失败,请检查日志文件。 >> %LOGFILE%
exit /b
)
echo BCD 修复完成。 >> %LOGFILE%
echo 修复完成,日志文件位于: %LOGFILE%
pause
方法 2:使用 PowerShell 脚本
以下是一个用于修复 BCD 的 PowerShell 脚本示例:
# 确保以管理员身份运行
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
exit
}
$logFile = "$env:TEMP\bcd_repair_log.txt"
"修复开始时间: $(Get-Date)" | Out-File -FilePath $logFile -Encoding utf8
# 备份现有 BCD
"备份现有 BCD..." | Out-File -FilePath $logFile -Append -Encoding utf8
try {
bcdedit /export C:\BCD_Backup.bak | Out-File -FilePath $logFile -Append -Encoding utf8
} catch {
"备份失败: $_" | Out-File -FilePath $logFile -Append -Encoding utf8
exit
}
# 删除现有 BCD
"删除现有 BCD..." | Out-File -FilePath $logFile -Append -Encoding utf8
Remove-Item C:\boot\bcd -ErrorAction SilentlyContinue
# 重建 BCD
"重建 BCD..." | Out-File -FilePath $logFile -Append -Encoding utf8
try {
bcdboot C:\Windows /l zh-CN /s C: /f ALL | Out-File -FilePath $logFile -Append -Encoding utf8
} catch {
"重建 BCD 失败: $_" | Out-File -FilePath $logFile -Append -Encoding utf8
exit
}
"BCD 修复完成。" | Out-File -FilePath $logFile -Append -Encoding utf8
Write-Host "修复完成,日志文件位于: $logFile"
使用说明
-
创建文件:
- 将上述代码分别复制到文本编辑器中,并保存为
bcd_repair.cmd或bcd_repair.ps1。
- 将上述代码分别复制到文本编辑器中,并保存为
-
运行文件:
- 右键点击文件,选择“以管理员身份运行”。
注意事项
- 请确保在执行这些命令之前备份重要数据。
- 这些命令假设 Windows 安装在 C: 驱动器上。如果您的 Windows 安装在其他驱动器上,请相应地调整驱动器字母。
如果您的计算机使用 UEFI 引导方式并遇到启动问题,可以尝试以下方法:
您可以尝试以下方法:
-
使用Windows安装介质修复:您可以使用Windows安装光盘或USB启动盘来修复UEFI引导问题。在进入Windows安装界面后,选择“修复计算机”,然后按照提示进行操作。
-
更新UEFI固件:如果您的计算机的UEFI固件版本过低,可能会出现启动问题。您可以在计算机制造商的官网上下载最新版本的UEFI固件并更新,以帮助解决UEFI引导问题。
-
检查硬件故障:在某些情况下,UEFI引导问题可能是由硬件故障引起的。您可以运行硬件诊断工具来检查RAM、硬盘驱动器等硬件是否正常工作。
-
使用 Windows 安装媒体引导计算机并进入恢复环境。可以通过从 ISO 文件创建启动 USB 或 DVD 来获得 Windows 安装媒体。
-
在恢复环境中,选择“疑难解答” > “高级选项” > “命令提示符”来打开管理员权限的命令提示符。
-
输入以下命令以重建 BCD 文件:
bootrec /rebuildbcd
此命令可以扫描系统中所有 Windows 安装,然后将其添加到引导配置数据(BCD)文件中。
- 如果在运行 bootrec /rebuildbcd 命令后未找到 Windows 安装,则输入以下命令以重建 BCD 文件:
bcdedit /export C:\BCD_Backup
c:
cd boot
attrib bcd -s -h -r
ren c:\boot\bcd bcd.old
bootrec /rebuildbcd
这些命令将备份当前的 BCD 文件,并创建一个新的空白文件。然后它们将扫描系统中所有 Windows 安装,并将其添加到新的 BCD 文件中。
- 最后,重新启动计算机以检查是否已解决启动问题。
针对UEFI引导的问题,您可以尝试以下方法来修复:
-
进入计算机的UEFI设置:首先需要进入计算机的UEFI设置界面,在计算机启动时按下正确的键(通常是Del或F2键),进入UEFI设置。
-
恢复默认设置:在UEFI设置界面中,找到恢复默认设置的选项,确认并保存更改。
-
重新设置引导顺序:如果默认设置没有成功解决问题,您可以尝试重新设置启动顺序。在UEFI设置界面中,找到引导选项,并使用方向键将Windows Boot Manager或硬盘驱动器排在最前面。
-
重建BCD文件:如果以上方法都无法解决问题,则可以尝试重建启动配置数据(BCD)文件。进入恢复环境后,选择“疑难解答” > “高级选项” > “命令提示符”,然后输入以下命令:
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd
这些命令将修复Master Boot Record(MBR)和启动扇区,并重建BCD文件,以帮助解决UEFI引导问题。
- 最后,重启计算机,检查问题是否已解决。
修复 Master Boot Record(MBR)、启动扇区,并重建 BCD 文件以解决 UEFI 引导问题,您可以使用以下批处理文件(.cmd)或 PowerShell 脚本。以下是两个示例,分别用于这两种方法。
方法 1:使用批处理文件 (.cmd)
以下是一个批处理文件示例,用于修复 MBR、启动扇区并重建 BCD 文件:
@echo off
setlocal enabledelayedexpansion
echo 正在修复 MBR、启动扇区和 BCD...
:: 确保以管理员身份运行
if not "%1"=="runas" (
echo 以管理员身份重新启动...
powershell -Command "Start-Process '%~f0' -ArgumentList 'runas' -Verb RunAs"
exit /b
)
:: 日志文件
set LOGFILE=%TEMP%\mbr_repair_log.txt
echo 修复开始时间: %DATE% %TIME% > %LOGFILE%
:: 修复 MBR
echo 修复 MBR... >> %LOGFILE%
bootrec /fixmbr >> %LOGFILE% 2>&1
if errorlevel 1 (
echo MBR 修复失败,请检查日志文件。 >> %LOGFILE%
exit /b
)
:: 修复启动扇区
echo 修复启动扇区... >> %LOGFILE%
bootrec /fixboot >> %LOGFILE% 2>&1
if errorlevel 1 (
echo 启动扇区修复失败,请检查日志文件。 >> %LOGFILE%
exit /b
)
:: 重建 BCD
echo 重建 BCD... >> %LOGFILE%
bootrec /rebuildbcd >> %LOGFILE% 2>&1
if errorlevel 1 (
echo BCD 重建失败,请检查日志文件。 >> %LOGFILE%
exit /b
)
echo 修复完成。 >> %LOGFILE%
echo 日志文件位于: %LOGFILE%
pause
方法 2:使用 PowerShell 脚本
以下是一个 PowerShell 脚本示例,用于执行相同的修复操作:
# 确保以管理员身份运行
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
exit
}
$logFile = "$env:TEMP\mbr_repair_log.txt"
"修复开始时间: $(Get-Date)" | Out-File -FilePath $logFile -Encoding utf8
# 修复 MBR
"修复 MBR..." | Out-File -FilePath $logFile -Append -Encoding utf8
try {
bootrec /fixmbr | Out-File -FilePath $logFile -Append -Encoding utf8
} catch {
"MBR 修复失败: $_" | Out-File -FilePath $logFile -Append -Encoding utf8
exit
}
# 修复启动扇区
"修复启动扇区..." | Out-File -FilePath $logFile -Append -Encoding utf8
try {
bootrec /fixboot | Out-File -FilePath $logFile -Append -Encoding utf8
} catch {
"启动扇区修复失败: $_" | Out-File -FilePath $logFile -Append -Encoding utf8
exit
}
# 重建 BCD
"重建 BCD..." | Out-File -FilePath $logFile -Append -Encoding utf8
try {
bootrec /rebuildbcd | Out-File -FilePath $logFile -Append -Encoding utf8
} catch {
"BCD 重建失败: $_" | Out-File -FilePath $logFile -Append -Encoding utf8
exit
}
"修复完成。" | Out-File -FilePath $logFile -Append -Encoding utf8
Write-Host "修复完成,日志文件位于: $logFile"
使用说明
-
创建文件:
- 将上述代码分别复制到文本编辑器中,并保存为
repair_mbr.cmd或repair_mbr.ps1。
- 将上述代码分别复制到文本编辑器中,并保存为
-
运行文件:
- 右键点击文件,选择“以管理员身份运行”。
注意事项
- 请确保在执行这些命令之前备份重要数据。
- 这些命令假设您正在修复的系统是当前启动的系统。如果您在其他环境中运行这些命令,可能需要调整。

浙公网安备 33010602011771号