You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

解决WinPE专属BCD条目仅启动自动修复/引导报错0xc000007b的问题

解决通过BCD条目启动U盘WinPE的问题

看起来你遇到的核心问题是BCD条目里的设备指向逻辑不对——你用当前系统里的U盘盘符(比如D:)来设置deviceosdevice,但重启后BIOS环境下这个盘符映射完全不生效,系统找不到对应的EFI文件,所以才会报0xc000007b错误。而手动选择时BIOS会直接识别U盘的可移动设备分区,自然能正常启动。

下面是修改后的PowerShell代码,我会标注关键改动点:

# 复制当前BCD条目作为模板,命名为WinPE启动项
$output = bcdedit /copy '{current}' /d "WinPE from USB"
# 提取新条目的GUID
$variable = "{" + $output.Split('{')[-1].TrimEnd('.')

# 关键改动:用removable代替固定的partition=$drive
# 这样BIOS会自动扫描所有可移动存储设备的EFI分区,不依赖系统临时盘符
bcdedit /set $variable device removable
bcdedit /set $variable osdevice removable

# 保持你确认有效的EFI引导文件路径
bcdedit /set $variable path \EFI\Boot\bootx64.efi

# WinPE专属配置
bcdedit /set $variable winpe yes
bcdedit /set $variable systemroot \windows
bcdedit /set $variable recoveryenabled No

# 设置该条目为启动顺序首位
bcdedit /bootsequence $variable

改动原因说明

  • removable关键字:这是最核心的修正。当你把deviceosdevice设为removable时,BIOS会在启动阶段主动扫描所有可移动存储的EFI分区,匹配你指定的引导文件路径,完全避开了系统盘符在重启后可能变化的问题——毕竟系统里的U盘盘符是临时分配的,BIOS层面根本不认这个标识。
  • 去掉了依赖当前位置盘符的逻辑:原来的$drive = (get-location).Drive.Name + ":"会取PowerShell当前窗口所在的盘符,如果你的U盘不是当前路径所在盘,或者重启后盘符改变,直接就会失效。

额外检查建议

  1. 确认你的U盘是GPT分区表(EFI启动必须要求GPT),且EFI分区格式为FAT32。
  2. 再次验证U盘里的\EFI\Boot\bootx64.efi文件完整且正常(你手动能启动,这一步应该没问题)。
  3. 如果之前的旧BCD条目还在,建议先删除再重新创建:
    # 替换成你旧条目的GUID
    bcdedit /delete {旧条目GUID}
    

修改完成后重启电脑,选择你创建的WinPE启动项,应该就能正常进入U盘里的Windows PE环境了。

内容的提问来源于stack exchange,提问作者GrumpyCrouton

火山引擎 最新活动