为NVPE加入 IMDISK 软盘技术之路

2014年09月09日 技术资料 4817 views 0

为PE加入IMDISK
把DISK.SYS放system3下
2面DRIVERS里面,在system32下面加入IMDISK.CPL,

在SETUPREG.HIV里面加入下面注册表文件:
IM

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\pe\ControlSet001\Services\ImDisk]
"Type"=dword:00000001
"Start"=dword:00000003
"ErrorControl"=dword:00000000
"ImagePath"=hex
(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44
,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,69,00,6d,00,64,00,
69,00,73,00,6b,\
00,2e,00,73,00,79,00,73,00,00,00
"DisplayName"="ImDisk Virtual Disk Driver"
"Description"="Disk emulation driver"
[HKEY_LOCAL_MACHINE\pe\ControlSet001
\Services\ImDisk\Security]
"Security"=hex:01,00,14,80,b8,00,00,00,c4,00,00,00,14,00,00,
00,30,00,00,00,02,\
00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,
00,00,01,00,00,\
00,00,02,00,88,00,06,00,00,00,00,00,14,00,fd,01,02,00,01,01,
00,00,00,00,00,\
05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,
05,20,00,00,00,\
20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,
04,00,00,00,00,\
00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,06,00,00,00,00,
00,14,00,00,01,\
00,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,00,18,00,fd,01,
02,00,01,02,00,\
00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,00,00,00,00,00,
05,12,00,00,00,\
01,01,00,00,00,00,00,05,12,00,00,00
[HKEY_LOCAL_MACHINE\pe\ControlSet001\Services\ImDisk\Enum]
"0"="Root\\LEGACY_IMDISK\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001
[HKEY_LOCAL_MACHINE\pe\ControlSet001
\Enum\Root\LEGACY_IMDISK]
"NextInstance"=dword:00000001
[HKEY_LOCAL_MACHINE\pe\ControlSet001
\Enum\Root\LEGACY_IMDISK\0000]
"Service"="ImDisk"
"Legacy"=dword:00000001
"ConfigFlags"=dword:00000000
"Class"="LegacyDriver"
"ClassGUID"="{8ECC055D-047F-11D1-A537-0000F8753ED1}"
"DeviceDesc"="ImDisk Virtual Disk Driver"
"Capabilities"=dword:00000000
[HKEY_LOCAL_MACHINE\pe\ControlSet001
\Enum\Root\LEGACY_IMDISK\0000\Control]


这样就为PE安装好了IMDISK支持了。



为PE加入IMDISK右键支持:

reg add "HKCR\Drive\shell\ImDiskSaveImage" /f /ve /t REG_SZ /d "保存ImDisk虚拟磁盘"
reg add "HKCR\Drive\shell\ImDiskSaveImage\command" /f /ve /t REG_SZ /d "rundll32.exe imdisk.cpl,RunDLL_SaveImageFile %%L"
reg add "HKCR\Drive\shell\ImDiskUnmount" /f /ve /t REG_SZ /d "卸载ImDisk虚拟磁盘"
reg add "HKCR\Drive\shell\ImDiskUnmount\command" /f /ve /t REG_SZ /d "rundll32.exe imdisk.cpl,RunDLL_RemoveDevice %%L"
reg add "HKLM\SOFTWARE\Classes\Ultraiso\shell\ImDiskMountFile" /f /ve /t REG_SZ /d "加载ImDisk虚拟磁盘"
reg add "HKLM\SOFTWARE\Classes\Ultraiso\shell\ImDiskMountFile\command" /f /ve /t REG_SZ /d "rundll32.exe imdisk.cpl,RunDLL_MountFile %%L"
reg add "HKLM\SOFTWARE\Classes\Winimage\shell\ImDiskMountFile" /f /ve /t REG_SZ /d "加载ImDisk虚拟磁盘"
reg add "HKLM\SOFTWARE\Classes\Winimage\shell\ImDiskMountFile\command" /f /ve /t REG_SZ /d "rundll32.exe imdisk.cpl,RunDLL_MountFile %%L"


上面保存为CMD文件,在启动PE时运行就行了。


IMDISK的应用:
PECMD RAMD 命令的用法和给ImDisk扩容的方法


命令说明:
┣━━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃      │格式│RAMD <驱动名称>,[磁盘大小],[磁盘格式],[盘符字母],[磁盘卷标]                                 ┃
┃      ├──┼──────────────────────────────────────────────┨
┃      │功能│设置虚拟磁盘(RamDisk)                                                                       ┃
┃      ├──┼──────────────────────────────────────────────┨
┃      │参数│■驱动名称: Ramdriv 或 ImDisk;                                                             ┃
┃      │    │■磁盘大小: 单位为 MB,用 Pxx Lyy Hzz 定义,xx为可用内存百分数,yy为最小值,zz为最大值;    ┃
┃      │    │■磁盘格式: 支持 FAT、FAT32、NTFS 三种格式,设置时将按参数格式化,省略时不对磁盘作格式化; ┃
┃      │    │■盘符字母: 为 ImDisk 虚拟内存盘分配的盘符,使用 Ramdriv 驱动时该参数及"磁盘卷标"均要省略; ┃
┃'RAMD'│    │■磁盘卷标: 使用 ImDisk 驱动时格式化磁盘时设置的卷标。                                      ┃
┃      ├──┼──────────────────────────────────────────────┨
┃      │示例│RAMD ImDisk,L64,NTFS,B:,ImDIsk 或 RAMD Ramdriv,P20L32H64                                    ┃
┃      ├──┼──────────────────────────────────────────────┨
┃      │备注│※使用 Ramdriv 驱动时由驱动分配盘符并格式化;使用 ImDisk 驱动时可由 PECMD 分配盘符并格式化;┃
┃      │    │※使用 ImDisk 驱动时可用该命令给指定的虚拟盘扩容,如 RAMD ImDisk,L128,NTFS,R:,ImDIsk        ┃
┃      │    │※Pxx Lyy Hzz 三个参数都可单独使用,PECMD.EXE限定的最小值为 1MB,最大值为 2048MB;          ┃
┃      │    │※使用 WinMount.SYS 驱动挂载 WIM 映像建议用 ImDisk 虚拟盘,小容量的磁盘不能格为 FAT32格式; ┃
┃      │    │※命令若执行成功,进程环境变量 %CurRamDisk% 即为盘符,可按需用 ENVI 设置成系统环境变量。    ┃
┣━━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫




1、建立一个新的 ImDisk 虚拟盘示例:盘符为 B:,容量64MB,FAT格式,无卷标
RAMD ImDisk,L64,FAT,B:
2、建立一个新的 ImDisk 虚拟盘示例:盘符为 Y:,容量128MB,FAT32格式,卷标mydisk
RAMD ImDisk,L128,FAT32,Y:,mydisk


3、给已存在的盘符为 B: 的 ImDisk 虚拟盘扩容到128MB,格式不变,原已在 B: 盘的文件不变:
RAMD ImDisk,L128,B:


4、给已存在的盘符为 Y: 的 ImDisk 虚拟盘扩容到256MB,格式不变,原已在 Y: 盘的文件不变:
RAMD ImDisk,L256,Y:


5、给已存在的盘符为 B: 的 ImDisk 虚拟盘扩容到128MB,并转为NTFS格式(原已在 B: 盘中的文件会被格掉):
RAMD ImDisk,L128,NTFS,B:

👍好活当赏🧧