必须让虚拟机获得对物理硬盘的原始、独占访问权限,需先在Windows磁盘管理中将目标磁盘及所有分区全部“脱机”,再通过Hyper-V关机状态下添加SCSI控制器直通该物理硬盘,启动后虚拟机即可识别为裸设备。

要在Windows平台的虚拟机中直接使用宿主机上的一块真实物理硬盘,绕过文件共享或镜像转换,必须让虚拟机获得对这块磁盘的原始、独占访问权限——这要求关闭物理机操作系统对该磁盘的卷管理控制,并在虚拟化层完成裸设备映射。
确认物理磁盘状态并解除系统占用
以管理员身份运行磁盘管理(diskmgmt.msc),找到目标物理硬盘(如“磁盘 1”),右键各分区→选择“脱机”。【必须全部脱机,不能仅删除驱动器号】 若某分区显示“正在使用中”而无法脱机,打开“计算机管理→服务和应用程序→服务”,停止“Shell Hardware Detection”与“Windows Search”服务后再试。未脱机的分区会被Hyper-V拒绝挂载,报错“物理磁盘已被使用”。
打开磁盘管理后,确认该磁盘左下角状态为“脱机”且无任何绿色“在线”标记。
Hyper-V中为虚拟机配置物理磁盘直通
关闭目标虚拟机(必须关机,不能暂停或保存状态)。
在Hyper-V管理器中,右键虚拟机→“设置”→左侧导航栏展开“硬件”→点击“SCSI控制器”→点击右侧“添加硬件”→选择“物理硬盘”→点击“添加”。
在新出现的“物理硬盘”设置页中,下拉“物理硬盘”选项框,选择你已脱机的那块磁盘(例如“磁盘 1”)。【切勿勾选“启用写入缓存”】 否则可能引发数据不一致;若目标磁盘含Windows系统分区,还应取消勾选“启用I/O限制”,避免启动时卡死。
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
点击“应用”→“确定”,完成配置。
启动虚拟机并验证磁盘识别
启动虚拟机,进入操作系统(如Windows或Linux)。
在Windows虚拟机中:打开“磁盘管理”,应立即看到一块“未知、未初始化”的新磁盘,其容量与宿主机物理硬盘完全一致,且磁盘属性中“位置”显示为“SCSI”而非“ATA”或“NVMe”。
在Linux虚拟机中:执行 lsblk 或 lsscsi,可查到新增的 /dev/sdb(或类似)设备,且 sudo fdisk -l /dev/sdb 能正确读出原始分区表结构——说明直通成功,未经过任何文件系统抽象层。










