windows 10开机自动挂载vhd有四种方法:一、任务计划程序启动时执行powershell脚本;二、vhd快捷方式放入系统启动文件夹;三、diskpart脚本配合隐藏批处理;四、注册表runonce键值一次性执行挂载。

如果您希望Windows 10在每次开机时自动挂载VHD虚拟硬盘,避免手动重复操作,则需绕过图形界面的临时挂载机制,采用系统级持久化方案。以下是多种可独立生效的设置方法:
一、通过任务计划程序配置开机自动挂载
该方法利用Windows内置的任务计划程序,在系统启动完成前以高权限静默执行挂载命令,支持VHD/VHDX文件,且不会弹出黑框或资源管理器窗口。
1、新建一个文本文件,输入以下内容并保存为mount_vhd.ps1(注意扩展名为.ps1):
@echo off
powershell.exe -ExecutionPolicy Bypass -File "%~dp0mount_vhd.ps1"
2、在同一目录下创建mount_vhd.ps1,写入:
Mount-DiskImage -ImagePath "D:\data\backup.vhd"
3、以管理员身份打开“任务计划程序”,点击“创建任务”。
4、在“常规”选项卡中,勾选“使用最高权限运行”,名称设为“Auto Mount VHD”。
5、在“触发器”选项卡中,点击“新建”,选择“启动时”,延迟设为“30秒”以避开系统初始化争抢。
6、在“行动”选项卡中,点击“新建”,程序栏填入powershell.exe,参数栏填入:
-ExecutionPolicy Bypass -File "D:\data\mount_vhd.ps1"
7、在“条件”选项卡中,取消勾选“只有在计算机使用交流电源时才启动此任务”(适用于笔记本)。
8、确认保存后,重启系统验证是否自动挂载。
二、将VHD快捷方式放入系统启动文件夹
该方法依赖Windows登录时自动执行启动项的机制,操作最简,但仅对用户登录后生效,不适用于无人值守场景;挂载行为由explorer.exe发起,可能短暂弹出窗口。
1、在资源管理器中定位目标VHD文件,如E:\vm\disk.vhd。
2、右键该文件,选择“创建快捷方式”,生成“disk.vhd - 快捷方式”。
3、按Win+R,输入%programdata%\Microsoft\Windows\Start Menu\Programs\Startup,回车打开系统级启动文件夹。
4、将上一步生成的快捷方式复制粘贴至此文件夹内。
5、重启电脑并登录账户,观察“此电脑”中是否出现对应驱动器号。
三、使用diskpart脚本配合隐藏批处理静默挂载
该方法完全规避PowerShell执行策略限制,通过diskpart命令行工具实现只读挂载,配合批处理隐藏执行过程,杜绝CMD窗口闪烁,适合对UI干扰零容忍的环境。
1、新建文本文件,命名为attach_vhd.bat,内容如下:
@echo off
echo select vdisk file="D:\secure\container.vhd" > attach.txt
echo attach vdisk readonly >> attach.txt
diskpart /s attach.txt >nul 2>&1
del /f /q attach.txt
exit
2、右键该BAT文件,选择“属性”,在“兼容性”选项卡中勾选“以管理员身份运行此程序”。
3、打开任务计划程序,创建基本任务,触发器设为“登录时”,操作设为“启动程序”,程序路径指向该BAT文件。
4、在任务属性中,勾选“不管用户是否登录都要运行”与“隐藏”,并再次确认“使用最高权限运行”已启用。
5、保存后重启,检查磁盘管理器中是否显示已附加且状态为“在线”。
四、注册表注入自动挂载策略(适用于企业部署)
该方法通过修改HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce键值,在系统首次登录时执行一次挂载,适合批量部署场景;挂载后不再重复触发,需配合脚本确保幂等性。
1、以管理员身份运行regedit,导航至:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
2、右键右侧空白处,选择“新建 → 字符串值”,命名为MountVHDOnLogin。
3、双击该值,数据字段填入:
powershell.exe -WindowStyle Hidden -ExecutionPolicy Bypass -Command "Mount-DiskImage -ImagePath 'C:\vhd\main.vhd'"
4、关闭注册表编辑器,重启系统并登录,观察挂载是否完成。
5、挂载成功后,该注册表项将自动删除,确保仅执行一次。










