无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6264|回复: 44
打印 上一主题 下一主题

[分享] 右键创建、加载、卸载VHD完美方法

    [复制链接]
跳转到指定楼层
1#
发表于 2024-9-22 10:58:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小吴 于 2024-9-22 15:01 编辑

右键创建、加载、卸载VHD完美方法

在批处理论坛看到大神的代码,搬过来分享一下,在此作个记号留个脚印。


特点:
不需要批处理文件名本身,更没有批处理文件的路径,仅存在批处理的命令行。
下载或复制后直接导入注册表即可。
(适用于win7及以上,不适用于XP系统)



Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\Vhdproject]
"icon"="%SystemRoot%\\system32\\shell32.dll,7"
"MUIVerb"="VHD工具"
"SubCommands"="CreateExpandableVHD;CreateFixedVHD"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\Vhdproject]
"icon"="%SystemRoot%\\system32\\shell32.dll,7"
"MUIVerb"="VHD工具"
"SubCommands"="CreateExpandableVHD;CreateFixedVHD"


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\CreateExpandableVHD]
"icon"="%SystemRoot%\\system32\\shell32.dll,7"
"MUIVerb"="创建动态VHD"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\CreateExpandableVHD\command]
@="cmd.exe /v:on /c color 1F &  set /p \"vhdName=请输入文件全称(例123.vhd或123.vhdx):\" & set /p \"vhdSize=请输入文件大小(不必录入MB,直接例5000):\" & set \"vhdPath=%V\\!vhdName!\" & set \"vhdPath=!vhdPath:\\\\=\\!\" & echo,!vhdPath! & cmd.exe /v:on /c \"echo create vdisk file=\"!vhdPath!\" maximum=!vhdSize! type=EXPANDABLE & echo Select vdisk file=\"!vhdPath!\" & echo attach vdisk & echo create partition primary & echo select partition 1 & echo ASSIGN & echo format fs=ntfs label=!vhdName! quick\" | diskpart.exe"


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\CreateFixedVHD]
"icon"="%SystemRoot%\\system32\\shell32.dll,7"
"MUIVerb"="创建固定VHD"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\CreateFixedVHD\command]
@="cmd.exe /v:on /c color 1F & set /p \"vhdName=请输入文件全称(例123.vhd或123.vhdx):\" & set /p \"vhdSize=请输入文件大小(不必录入MB,直接例5000):\" & set \"vhdPath=%V\\!vhdName!\" & set \"vhdPath=!vhdPath:\\\\=\\!\" & echo,!vhdPath! & cmd.exe /v:on /c \"echo create vdisk file=\"!vhdPath!\" maximum=!vhdSize! type=FIXED & echo Select vdisk file=\"!vhdPath!\" & echo attach vdisk & echo create partition primary & echo select partition 1 & echo ASSIGN & echo format fs=ntfs label=!vhdName! quick\" | diskpart.exe"



[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shell\KLoadvhd1]
"icon"="%SystemRoot%\\system32\\shell32.dll,7"
@="右键加载VHD √"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shell\KLoadvhd1\command]
@="cmd.exe /v:on /c color 1F & (echo Select vdisk file=%1 & echo attach vdisk & echo select partition 1 & echo assign) | diskpart"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shell\LKillvhd1]
"icon"="%SystemRoot%\\system32\\shell32.dll,7"
@="右键卸载VHD ×"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shell\LKillvhd1\command]
@="cmd.exe /v:on /c color 1F & (echo Select vdisk file=%1 & echo detach vdisk) | diskpart"




CreatLoadKillVHD.zip

885 Bytes, 下载次数: 115, 下载积分: 无忧币 -2

评分

参与人数 2无忧币 +15 收起 理由
dayeye + 5
20090101 + 10 赞一个!

查看全部评分

2#
发表于 2024-9-22 11:04:45 | 只看该作者
第一?
回复

使用道具 举报

3#
发表于 2024-9-22 11:05:57 | 只看该作者
支持原创  谢谢
回复

使用道具 举报

4#
发表于 2024-9-22 11:17:24 | 只看该作者
感谢楼主分享
回复

使用道具 举报

5#
发表于 2024-9-22 11:22:28 | 只看该作者
不错
收藏备用
谢谢分享
回复

使用道具 举报

6#
发表于 2024-9-22 11:38:16 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

7#
发表于 2024-9-22 11:40:22 | 只看该作者
感谢楼主分享
回复

使用道具 举报

8#
发表于 2024-9-22 11:40:49 | 只看该作者
能添加: 创建差分吗
回复

使用道具 举报

9#
发表于 2024-9-22 11:44:04 | 只看该作者
支持原创
回复

使用道具 举报

10#
发表于 2024-9-22 11:57:54 | 只看该作者
下一个备用
回复

使用道具 举报

11#
发表于 2024-9-22 12:41:09 | 只看该作者
感谢分享了
回复

使用道具 举报

12#
发表于 2024-9-22 12:44:56 | 只看该作者

感谢分享
回复

使用道具 举报

13#
发表于 2024-9-22 12:47:33 | 只看该作者
试了一下,很不错很方便,要是能再加个把这几个键值删除(相当于卸载)就完美了。
回复

使用道具 举报

14#
发表于 2024-9-22 12:59:13 | 只看该作者
感谢楼主分享
回复

使用道具 举报

15#
发表于 2024-9-22 13:44:46 | 只看该作者
感谢楼主分享!
回复

使用道具 举报

16#
发表于 2024-9-22 13:51:04 | 只看该作者
谢谢分享
回复

使用道具 举报

17#
发表于 2024-9-22 13:55:55 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

18#
发表于 2024-9-22 14:13:51 | 只看该作者
少是米达
回复

使用道具 举报

19#
发表于 2024-9-22 14:18:30 | 只看该作者
不明觉厉
回复

使用道具 举报

20#
发表于 2024-9-22 14:39:17 | 只看该作者
本帖最后由 bboys 于 2024-9-22 14:43 编辑

论坛VHD专区
baby1277在7月份发过vhd添加到bcd 支持右键菜单批处理和楼主的注册表刚好配合
  1. @echo off
  2. :: 右键菜单支持
  3. if defined vhdpath goto vhdFilesok
  4. :: 拖拽操作支持
  5. set vhdpath=%~1
  6. if defined vhdpath goto vhdFilesok
  7. :: 常规批处理窗口输入
  8. set /p vhdpath=请输入VHD文件完整路径后按回车键,PS:提示可以将VHD文件拖拽进来 :
  9. :: 检测路径错误
  10. for /f "delims=" %%i in ('echo %vhdpath%') do if not exist "%%~i" msg %username% /time:3 输入错误文件不存在! && exit
  11. :: 去掉路径的引号,记录文件夹名,并判断文件后缀名。
  12. : vhdFilesok
  13. for /f "delims=" %%i in ('echo %vhdpath%') do set vhdname=%%~ni && set vhdpath=%%~i && if /i not "%%~xi"==".vhd" if /i not "%%~xi"==".vhdx" msg %username% /time:3 错误,不是VHD文件! && exit
  14. :: 判断固件类型
  15. bcdedit /enum bootmgr |find /i "efi" && set exef=efi || set exef=exe
  16. :: 添加休眠条目恢复项
  17. for /f "tokens=2" %%i in ('bcdedit /create /d "%vhdname%_VHD" /application resume') do set id1=%%i
  18. bcdedit /set %id1% device vhd=[%vhdpath:~0,2%]%vhdpath:~2%
  19. bcdedit /set %id1% path \windows\system32\winresume.%exef%
  20. bcdedit /set %id1% locale zh-cn
  21. bcdedit /set %id1% inherit {resumeloadersettings}
  22. bcdedit /set %id1% isolatedcontext Yes
  23. bcdedit /set %id1% allowedinmemorysettings 0x15000075
  24. bcdedit /set %id1% filepath \hiberfil.sys
  25. bcdedit /set %id1% bootmenupolicy Standard
  26. :: 添加操作系统条目
  27. for /f "tokens=2" %%i in ('bcdedit /create /d "%vhdname%_VHD" /application osloader') do set id2=%%i
  28. bcdedit /set %id2% device vhd=[%vhdpath:~0,2%]%vhdpath:~2%
  29. bcdedit /set %id2% osdevice vhd=[%vhdpath:~0,2%]%vhdpath:~2%
  30. bcdedit /set %id2% path \Windows\System32\winload.%exef%
  31. bcdedit /set %id2% systemroot \Windows
  32. bcdedit /set %id2% Locale zh-cn
  33. bcdedit /set %id2% inherit {bootloadersettings}
  34. bcdedit /set %id2% isolatedcontext Yes
  35. bcdedit /set %id2% allowedinmemorysettings 0x15000075
  36. bcdedit /set %id2% nx OptIn
  37. bcdedit /set %id2% bootmenupolicy Standard
  38. bcdedit /set %id2% resumeobject %id1%
  39. :: 将引导菜单放置最后
  40. bcdedit /displayorder %id2% -addlast
  41. msg %username% /time:3   添加%vhdname%_VHD引导菜单完成
复制代码


还有VHD秒还原开机脚本和右键菜单
------------------------------------------------保存ANSI编码-------------------------------------------

  1. @echo off
  2. title VHD还原
  3. cd /d %~dp0
  4. :: 检查脚本安装环境
  5. set auto=baby1277
  6. if not exist bcd\bcdab0z goto error
  7. if not exist Windown11_back.vhdx goto error
  8. reg query "HKEY_CLASSES_ROOT\DesktopBackground\shell\vhdstart" >nul 2>nul
  9. if errorlevel 1 call 添加桌面右键菜单.bat
  10. :: 查询 "Windown11_back.vhdx" VHD副本文件大小
  11. for %%i in (Windown11_back.vhdx) do set back=%%~zi
  12. :: 查询 "Windown11 正常模式" 的VHD文件大小
  13. for %%i in (Windown11_10.vhdx) do set z0=%%~zi
  14. for %%i in (Windown11_1a.vhdx) do set za=%%~zi
  15. :: 查询 "Windown11 还原模式" 的VHD文件大小
  16. for %%i in (Windown11_11.vhdx) do set z1=%%~zi
  17. for %%i in (Windown11_1b.vhdx) do set zb=%%~zi
  18. :: 重置符合条件的 "Windown11 正常模式" 的VHD文件
  19. if %z0% gtr %za% if %za% gtr %back% copy /y Windown11_back.vhdx Windown11_1a.vhdx&&set v4=z
  20. if %za% gtr %z0% if %z0% gtr %back% copy /y Windown11_back.vhdx Windown11_10.vhdx&&set v4=z
  21. :: 重置符合条件的 "Windown11 还原模式" 的VHD文件
  22. if %zb% gtr %back% copy /y Windown11_back.vhdx Windown11_1b.vhdx
  23. if %z1% gtr %back% copy /y Windown11_back.vhdx Windown11_11.vhdx
  24. :: 重新查询 "Windown11 正常模式" 的VHD文件大小
  25. for %%i in (Windown11_10.vhdx) do set d0=%%~zi
  26. for %%i in (Windown11_1a.vhdx) do set da=%%~zi
  27. :: 重新查询 "Windown11 还原模式" 的VHD文件大小
  28. for %%i in (Windown11_11.vhdx) do set d1=%%~zi
  29. for %%i in (Windown11_1b.vhdx) do set db=%%~zi
  30. :: 根据文件大小来设置默认引导菜单
  31. if %d0% geq %da% set v1=0&set v3=a
  32. if %da% geq %d0% set v1=a&set v3=0
  33. if %d1% leq %db% set v2=1
  34. if %db% leq %d1% set v2=b
  35. if %d1% neq %db% set v4=h
  36. if defined v4 bcdedit /import bcd\bcd%v1%%v2%%v3%%v4%
  37. :: 更新桌面右键菜单
  38. set reg=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell
  39. if %d1% neq %db% goto menu
  40. reg add "%reg%\start.1" /v "" /t REG_SZ /d "Windown11  正常模式         √" /f
  41. reg add "%reg%\start.2" /v "" /t REG_SZ /d "Windown11  还原模式" /f
  42. reg add "%reg%\start.3" /v "" /t REG_SZ /d "Windown11  出厂模式" /f
  43. exit
  44. :menu
  45. if %d1% equ %db% exit
  46. reg add "%reg%\start.1" /v "" /t REG_SZ /d "Windown11  正常模式" /f
  47. reg add "%reg%\start.2" /v "" /t REG_SZ /d "Windown11  还原模式         √" /f
  48. reg add "%reg%\start.3" /v "" /t REG_SZ /d "Windown11  出厂模式" /f
  49. exit
  50. :error
  51. msg %username% /time:5 VHD还原脚本安装错误,请查看安装说明。
复制代码

点评

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=441537&fromuid=200427  发表于 2024-9-22 15:56
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=441537&fromuid=200427  详情 回复 发表于 2024-9-22 15:55
原帖地址在那里??  发表于 2024-9-22 15:29
回复

使用道具 举报

21#
发表于 2024-9-22 15:05:02 | 只看该作者
感谢分享
回复

使用道具 举报

22#
发表于 2024-9-22 15:55:57 | 只看该作者
bboys 发表于 2024-9-22 14:39
论坛VHD专区
baby1277在7月份发过vhd添加到bcd 支持右键菜单批处理和楼主的注册表刚好配合

http://bbs.wuyou.net/forum.php?m ... &fromuid=200427
回复

使用道具 举报

23#
发表于 2024-9-22 16:02:03 | 只看该作者
谢谢分享,收下了。
回复

使用道具 举报

24#
发表于 2024-9-22 16:50:15 | 只看该作者
谢谢大佬分享!
回复

使用道具 举报

25#
发表于 2024-9-22 17:31:02 | 只看该作者
感谢分享好东东
回复

使用道具 举报

26#
发表于 2024-9-22 18:12:14 | 只看该作者
谢谢分享
回复

使用道具 举报

27#
发表于 2024-9-22 18:43:24 | 只看该作者
感谢分享!!!
回复

使用道具 举报

28#
发表于 2024-9-22 21:37:31 | 只看该作者
右键加载很方便
回复

使用道具 举报

29#
发表于 2024-9-23 00:05:22 | 只看该作者
谢谢分享
回复

使用道具 举报

30#
发表于 2024-9-23 08:16:36 | 只看该作者

谢谢大佬分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-1-8 00:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表