无忧启动论坛

标题: 为pe添加右键imdisk功能 [打印本页]

作者: HB天意    时间: 2009-3-12 22:07
标题: 为pe添加右键imdisk功能
新版pecmd支持imdisk虚拟磁盘。
我把它集成到了pe中。另外增加了右键功能。效果图如下:






做法:
首先是添加imdisk.cpl到system32文件夹下,把imdisk.sys添加到system32下的driver文件夹下。
然后是在我的REGDOC.CMD中添加如下语句:
rem 注册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"
作者: HB天意    时间: 2009-3-12 22:09
这个右键可以生成许多盘符,也能够很方便的卸载掉。
不过我奇怪的是:论坛好像有网友说是要把imdsksvc.exe、imdisk.exe集成进去,为什么我没有加进去一样可以用?
那个imdsksvc.exe又是做什么用?

imdisk.rar (29.57 KB, 下载次数: 407)
附一个汉化版的imdisk.cpl。版本是1.1.3.刚刚汉化的,借用了不知名的大侠的汉化成果。极少地方没有汉化,应该不影响使用。

[ 本帖最后由 yidawpf 于 2009-3-12 22:14 编辑 ]
作者: 66369    时间: 2009-3-12 22:12
LZ先进了一步.学习了.
作者: nm888    时间: 2009-3-12 22:30
谢谢分享,试试看了。
作者: 66369    时间: 2009-3-12 22:35
考虑了下.仅上述步骤.可以吗.

注册表文件.不改?
作者: HB天意    时间: 2009-3-12 22:48
原帖由 66369 于 2009-3-12 22:35 发表
考虑了下.仅上述步骤.可以吗.

注册表文件.不改?

我的一级内核已经添加了老九提供的注册表文件。
所以我不清楚是不是必须的。
作者: chenall    时间: 2009-3-13 08:40
汉化的IMDISK.CPL收下了,谢谢分享
作者: aidixiao    时间: 2009-3-13 08:53
这是个好东西,谢谢楼主了!
作者: HB天意    时间: 2009-3-13 09:05
原帖由 chenall 于 2009-3-13 08:40 发表
汉化的IMDISK.CPL收下了,谢谢分享

您是无忧我非常佩服的一位大侠。您对imdisk的研究也比较早。
能够回答我2楼的问题吗?
作者: chenall    时间: 2009-3-13 09:58
IMDISKSVC.EXE我也不知是是作什么用的.在我的PE中也没有集成这个文件.
IMDISK.EXE相当于IMDISK.CPL的命令行程序.
作者: HB天意    时间: 2009-3-13 10:41
原帖由 chenall 于 2009-3-13 09:58 发表
IMDISKSVC.EXE我也不知是是作什么用的.在我的PE中也没有集成这个文件.
IMDISK.EXE相当于IMDISK.CPL的命令行程序.

谢谢指导!
作者: vcxzaq1    时间: 2009-3-13 11:22
不错,回去也加进去......
作者: pseudo    时间: 2009-3-13 12:57
原帖由 chenall 于 2009-3-13 08:40 发表
汉化的IMDISK.CPL收下了,谢谢分享


nn2nn以前发过一个imdisk.wim组件,XP、PE通用,点击即可用,也支持右键加载、卸载、保存虚拟磁盘。但IMDISK.CPL没有汉化。
楼主提供的汉化IMDISK.CPL也收下了,谢谢分享。
作者: HB天意    时间: 2009-3-13 13:03
这个还是有部分内容没有汉化,主要是我用资源黑客修改的时候没有看到那些英语,不知道怎么汉化其余部分。
作者: zzmzzm    时间: 2009-3-13 13:04
呵呵 看起来最近imdisk开始流行起来了
谢谢楼主分享
作者: 0cat0    时间: 2009-3-13 13:38
原帖由 yidawpf 于 2009-3-12 22:09 发表
这个右键可以生成许多盘符,也能够很方便的卸载掉。
不过我奇怪的是:论坛好像有网友说是要把imdsksvc.exe、imdisk.exe集成进去,为什么我没有加进去一样可以用?
那个imdsksvc.exe又是做什么用?

56266
...


imdsksvc.exe是一个叫做Helper service for ImDisk Virtual Disk Driver.的服务,应该没什么用的

下面是imdisk.inf的内容:

[Version]
signature = "$Windows NT$"
Provider = "Olof Lagerkvist"
DriverVer = 05/30/2007,1,00,03,0009


[SourceDisksNames]
1 = "ImDisk Virtual Disk Driver Installation disk"


[SourceDisksFiles.x86]
imdisk.sys = 1,sys\i386
imdsksvc.exe = 1,svc\i386
imdisk.cpl = 1,cpl\i386
imdisk.exe = 1,cli\i386
imdisk.inf = 1


[SourceDisksFiles.ia64]
imdisk.sys = 1,sys\ia64
imdsksvc.exe = 1,svc\ia64
imdisk.cpl = 1,cpl\ia64
imdisk.exe = 1,cli\ia64
imdisk.inf = 1


[SourceDisksFiles.amd64]
imdisk.sys = 1,sys\amd64
imdsksvc.exe = 1,svc\amd64
imdisk.cpl = 1,cpl\amd64
imdisk.exe = 1,cli\amd64
imdisk.inf = 1


[DestinationDirs]
ImDiskExeFiles = 11
ImDiskSysFiles = 12
ImDiskInfFiles = 17


[DefaultInstall.NT]
CopyFiles = ImDiskSysFiles, ImDiskExeFiles, ImDiskInfFiles
AddReg = ImDiskAddReg
DelReg = ImDiskDelOldReg


[DefaultUninstall.NT]
DelFiles = ImDiskSysFiles, ImDiskExeFiles, ImDiskInfFiles
DelReg = ImDiskDelReg


[DefaultInstall.NT.Services]
AddService = ImDisk, , ImDskDrv
AddService = ImDskSvc, , ImDskSvc


[DefaultUninstall.NT.Services]
DelService = ImDisk
DelService = ImDskSvc


[ImDiskExeFiles]
imdisk.exe
imdisk.cpl
imdsksvc.exe


[ImDiskSysFiles]
imdisk.sys


[ImDiskInfFiles]
imdisk.inf


[ImDiskAddReg]
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "DisplayName", 0, "ImDisk Virtual Disk Driver"
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "UninstallString", 0, "rundll32.exe setupapi.dll,InstallHinfSection DefaultUninstall 132 %17%\imdisk.inf"
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "DisplayIcon", 0, "%11%\imdisk.cpl"
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "EstimatedSize", 65537, 3635
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "Size", 0, ""

HKCR, "*\shell\ImDiskMountFile", , 0, "Mount as ImDisk Virtual Disk"
HKCR, "*\shell\ImDiskMountFile\command", , 0, "rundll32.exe imdisk.cpl,RunDLL_MountFile %%L"

HKCR, "Drive\shell\ImDiskUnmount", , 0, "Unmount ImDisk Virtual Disk"
HKCR, "Drive\shell\ImDiskUnmount\command", , 0, "rundll32.exe imdisk.cpl,RunDLL_RemoveDevice %%L"

HKCR, "Drive\shell\ImDiskSaveImage", , 0, "Save disk contents as image file"
HKCR, "Drive\shell\ImDiskSaveImage\command", , 0, "rundll32.exe imdisk.cpl,RunDLL_SaveImageFile %%L"


[ImDiskDelOldReg]
HKCR, "*\shell\ImDiskMountFileWriteable"


[ImDiskDelReg]
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk"

HKCR, "*\shell\ImDiskMountFile"

HKCR, "*\shell\ImDiskMountFileWriteable"

HKCR, "Drive\shell\ImDiskUnmount"

HKCR, "Drive\shell\ImDiskSaveImage"


[ImDskDrv]
DisplayName = "ImDisk Virtual Disk Driver"
Description = "Disk emulation driver"
ServiceType = 1
StartType = 3
ErrorControl = 0
ServiceBinary = %12%\imdisk.sys


[ImDskSvc]
DisplayName = "ImDisk Virtual Disk Driver Helper"
Description = "Helper service for ImDisk Virtual Disk Driver."
ServiceType = 16
StartType = 3
ErrorControl = 0
ServiceBinary = %11%\imdsksvc.exe
作者: secowu    时间: 2009-3-13 13:41
看来对于启动后自动加载是有用的吧
作者: 0cat0    时间: 2009-3-13 13:53
刚刚去主页看了一下,原来这个是有用的,下面是原文及机器翻译的内容:

The install package also contains a user-mode helper service that enables the virtual disk driver to forward I/O requests to other computers on the network.

安装包中还包含一个用户模式的辅助服务,使虚拟磁盘驱动着I / O请求到网络上的其他计算机。
作者: HB天意    时间: 2009-3-13 13:58
原帖由 0cat0 于 2009-3-13 13:53 发表
刚刚去主页看了一下,原来这个是有用的,下面是原文及机器翻译的内容:

The install package also contains a user-mode helper service that enables the virtual disk driver to forward I/O requests to  ...


也就是说用于网络的。
作者: dos时代菜鸟    时间: 2009-3-13 14:44
顶了,
不知道把 imdisk.sys 和imdisk.cpl 放入我的pe 二级内核并用regsvr32注册之是否可行。这样就不必改动一级内核了。
作者: HB天意    时间: 2009-3-13 14:51
原帖由 dos时代菜鸟 于 2009-3-13 14:44 发表
顶了,
不知道把 imdisk.sys 和imdisk.cpl 放入我的pe 二级内核并用regsvr32注册之是否可行。这样就不必改动一级内核了。


xp下是可行的。pe下不记得了。
作者: pseudo    时间: 2009-3-13 15:05
标题: 回复 #21 dos时代菜鸟 的帖子
可以放到pe外核。
作者: xLantu    时间: 2009-3-13 15:18
不知道应该怎么样啊??
作者: lxl1638    时间: 2009-3-14 01:44
原帖由 yidawpf 于 2009-3-12 22:09 发表
这个右键可以生成许多盘符,也能够很方便的卸载掉。
不过我奇怪的是:论坛好像有网友说是要把imdsksvc.exe、imdisk.exe集成进去,为什么我没有加进去一样可以用?
那个imdsksvc.exe又是做什么用?

56266
...


imdsksvc.exe :ImDisk 的服务管理工具,ImDisk 服务检测、开始停止 ImDisk 可以通过它来操作,一般安装后这样的工具很少人会用到的,可以不要。
imdisk.exe :ImDisk 的命令行工具,批处理用它建立虚拟盘等。
作者: dos时代菜鸟    时间: 2009-3-14 08:13
原来 imdisk 需要 在启动 lsass 进程前注册到注册表中。
imdisk虚拟盘.rar (39.4 KB, 下载次数: 163) 解压缩放入 一级内核 system32 中,并在 startpe.cmd 中调用imdisk.cmd 就可以实现pe支持imdisk功能了,同时具有lz的右键功能。呵呵。
作者: 66369    时间: 2009-3-14 10:15
原帖由 dos时代菜鸟 于 2009-3-14 08:13 发表
原来 imdisk 需要 在启动 lsass 进程前注册到注册表中。
把 56356 解压缩放入 一级内核 system32 中,并在 startpe.cmd 中调用imdisk.cmd 就可以实现pe支持imdisk功能了,同时具有lz的右键功能。呵呵。



也试了.发觉里边的REG文件.比老九提供的小.没成功.也不知........

把老九的REG.加进*.SI_以后.成功.
作者: HB天意    时间: 2009-3-14 10:23
原帖由 dos时代菜鸟 于 2009-3-14 08:13 发表
原来 imdisk 需要 在启动 lsass 进程前注册到注册表中。
把 56356 解压缩放入 一级内核 system32 中,并在 startpe.cmd 中调用imdisk.cmd 就可以实现pe支持imdisk功能了,同时具有lz的右键功能。呵呵。

那个注册表可以去掉,合到批处理中:
  1. reg add "HKLM\SYSTEM\ControlSet001\Services\ImDisk" /f /v "Type" /t REG_DWORD /d 1
  2. reg add "HKLM\SYSTEM\ControlSet001\Services\ImDisk" /f /v "Start" /t REG_DWORD /d 1
  3. reg add "HKLM\SYSTEM\ControlSet001\Services\ImDisk" /f /v "ErrorControl" /t REG_DWORD /d 0
  4. reg add "HKLM\SYSTEM\ControlSet001\Services\ImDisk" /f /v "ImagePath" /t REG_EXPAND_SZ /d "system32\DRIVERS\imdisk.sys"
  5. reg add "HKLM\SYSTEM\ControlSet001\Services\ImDisk" /f /v "DisplayName" /t REG_SZ /d "ImDisk Virtual Disk Driver"
  6. reg add "HKLM\SYSTEM\ControlSet001\Services\ImDisk" /f /v "Description" /t REG_SZ /d "Disk emulation driver"
  7. reg add "HKCR\Drive\shell\ImDiskSaveImage" /f /ve /t REG_SZ /d "保存ImDisk虚拟磁盘"
  8. reg add "HKCR\Drive\shell\ImDiskSaveImage\command" /f /ve /t REG_SZ /d "rundll32.exe imdisk.cpl,RunDLL_SaveImageFile %%L"
  9. reg add "HKCR\Drive\shell\ImDiskUnmount" /f /ve /t REG_SZ /d "卸载ImDisk虚拟磁盘"
  10. reg add "HKCR\Drive\shell\ImDiskUnmount\command" /f /ve /t REG_SZ /d "rundll32.exe imdisk.cpl,RunDLL_RemoveDevice %%L"
  11. reg add "HKLM\SOFTWARE\Classes\Ultraiso\shell\ImDiskMountFile" /f /ve /t REG_SZ /d "加载ImDisk虚拟磁盘"
  12. reg add "HKLM\SOFTWARE\Classes\Ultraiso\shell\ImDiskMountFile\command" /f /ve /t REG_SZ /d "rundll32.exe imdisk.cpl,RunDLL_MountFile %%L"
  13. reg add "HKLM\SOFTWARE\Classes\Winimage\shell\ImDiskMountFile" /f /ve /t REG_SZ /d "加载ImDisk虚拟磁盘"
  14. reg add "HKLM\SOFTWARE\Classes\Winimage\shell\ImDiskMountFile\command" /f /ve /t REG_SZ /d "rundll32.exe imdisk.cpl,RunDLL_MountFile %%L"
复制代码

[ 本帖最后由 yidawpf 于 2009-3-14 10:54 编辑 ]
作者: 66369    时间: 2009-3-14 10:52
标题: 回复 #28 yidawpf 的帖子
你要验证下.
运行:

PECMD RAMD ImDisk,L64,NTFS,B:

看看出现了B盘.才对.

最稳妥的就是.加老九REG到*.SI_    再引入一楼的...
作者: HB天意    时间: 2009-3-14 10:54
原帖由 66369 于 2009-3-14 10:52 发表
你要验证下.
运行:

PECMD RAMD ImDisk,L64,NTFS,B:

看看出现了B盘.才对.

最稳妥的就是.加老九REG到*.SI_    再引入一楼的...

我用的是老九的修改注册表的办法。
运行你说的命令就可以生成B盘。
作者: 66369    时间: 2009-3-14 11:02
原帖由 yidawpf 于 2009-3-14 10:54 发表

我用的是老九的修改注册表的办法。
运行你说的命令就可以生成B盘。




可以终结IMDISK加入PE的问题了.

以后要做的.是运用IMDISK问题了.
作者: 66369    时间: 2009-3-14 13:32
imdsksvc.exe imdisk.exe 两个文件还是要的.

右键ISO...IMDISK....就可以把ISO直接放到IMDISK盘了.
作者: HB天意    时间: 2009-3-14 13:44
原帖由 66369 于 2009-3-14 13:32 发表
imdsksvc.exe imdisk.exe 两个文件还是要的.

右键ISO...IMDISK....就可以把ISO直接放到IMDISK盘了.

不要这个,一样可以的。
作者: 66369    时间: 2009-3-14 13:50
标题: 回复 #33 yidawpf 的帖子
你的PE我试了.不能自动把ISO内容.放入其中.
作者: HB天意    时间: 2009-3-14 14:23
原帖由 66369 于 2009-3-14 13:50 发表
你的PE我试了.不能自动把ISO内容.放入其中.

刚刚测试了,可以啊!
作者: HY    时间: 2009-3-14 14:37
为什么我的右键菜单中只有“保存ImDisk虚拟磁盘”和"卸载ImDisk虚拟磁盘"两项,没有"加载ImDisk虚拟磁盘"这一项啊?
作者: 66369    时间: 2009-3-14 14:43
原帖由 66369 于 2009-3-14 13:50 发表
你的PE我试了.不能自动把ISO内容.放入其中.




我是实机试的.换台机器可以.砸了?..............

[ 本帖最后由 66369 于 2009-3-14 14:52 编辑 ]
作者: 66369    时间: 2009-3-14 14:53
原帖由 jdwxabc 于 2009-3-14 14:37 发表
为什么我的右键菜单中只有“保存ImDisk虚拟磁盘”和"卸载ImDisk虚拟磁盘"两项,没有"加载ImDisk虚拟磁盘"这一项啊?



找个ISO文件.右键.........
作者: HB天意    时间: 2009-3-14 16:18
原帖由 66369 于 2009-3-14 14:43 发表




我是实机试的.换台机器可以.砸了?..............

我也是实机测试的,没有问题。
作者: HY    时间: 2009-3-14 21:47
原帖由 yidawpf 于 2009-3-14 16:18 发表

我也是实机测试的,没有问题。

谢谢了!虽然不能加载,可能是PE的问题,我换个试试。
作者: wama    时间: 2009-12-8 10:08
不錯的東西,學習了.....................
作者: lisong    时间: 2009-12-8 21:18
是个好东东,收了!!!!!




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3