必须通过BCD手动注册VHDX路径并确保其具备完整可引导结构,否则将黑屏或提示“操作系统丢失”;需先分离VHDX、分配临时盘符验证EFI/Boot文件、用bcdedit设置device/osdevice为VHDX路径、指定winload.efi或winload.exe,并添加至启动菜单。

要在Windows开机引导菜单中添加已部署好操作系统的VHD或VHDX虚拟硬盘作为独立启动项,必须通过BCD(Boot Configuration Data)数据库手动注册该虚拟磁盘路径,并确保其内部具备完整可引导结构——这一步跳过会导致重启后黑屏或提示“操作系统丢失”。
确认VHD/VHDX已就绪且处于分离状态
挂载前必须确保VHDX文件未被任何进程占用,否则bcdedit将无法写入设备路径。打开【磁盘管理】,找到对应虚拟磁盘,右键选择【分离VHD】;若选项为灰色,请先在资源管理器中关闭所有指向该VHDX内驱动器的窗口。
用管理员权限运行PowerShell,执行:Get-VHD -Path "D:\Win11.vhdx" | Select-Object -Property Path,State,Attached,确认State为NotMounted、Attached为False。
【关键前提】该VHDX内必须已部署完整Windows系统,并通过bcdboot X:\Windows /s X: /f ALL写入过启动文件;若仅复制了Windows文件夹而未运行bcdboot,则此VHDX不可引导。
为VHDX分配临时盘符并验证引导分区
以管理员身份运行CMD或PowerShell,输入diskpart进入交互环境。
依次执行以下命令(注意路径使用英文双引号,反斜杠为半角):
select vdisk file="D:\Win11.vhdx"
attach vdisk readonly
list volume
观察输出中类型为“System”或“EFI”的卷,记下其Volume编号(如Volume 4)。执行:
select volume 4
assign letter=S
退出diskpart后,在资源管理器中打开S:,检查是否存在S:\EFI\Microsoft\Boot\bootmgr.efi(UEFI)或S:\bootmgr(Legacy BIOS)。若路径不存在,说明该VHDX尚未完成引导配置,需先挂载并运行bcdboot。
用bcdedit添加启动项
第一步:复制当前启动项并获取新标识符
执行:bcdedit /copy {current} /d "Windows 11 on VHDX",记录返回的形如{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}的新ID。
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
第二步:设置VHDX为设备与OS设备目标
执行:bcdedit /set {新ID} device vhd=[D:]\Win11.vhdx
执行:bcdedit /set {新ID} osdevice vhd=[D:]\Win11.vhdx
第三步:指定启动加载器类型
若目标VHDX为UEFI模式(GPT分区+EFI系统分区),执行:bcdedit /set {新ID} path \windows\system32\winload.efi
若为Legacy BIOS模式(MBR分区+活动主分区),执行:bcdedit /set {新ID} path \windows\system32\winload.exe
第四步:启用完整启动日志便于排错(可选但强烈建议)
执行:bcdedit /set {新ID} bootlog yes
最后执行:bcdedit /displayorder {新ID} /addlast,使该条目出现在启动菜单末尾。
重启验证并清理临时盘符
重启电脑,在启动菜单中选择新添加的条目。首次启动可能耗时较长(尤其动态VHDX),请耐心等待。
启动成功后,以管理员身份运行diskpart,执行:
select vdisk file="D:\Win11.vhdx"
detach vdisk
此时S:盘符会自动消失,无需手动取消分配。










