|
原帖由 chenall 于 2008-3-13 10:10 PM 发表 
那我就提些意见,希望可以考虑下。
1.同时可以支持另外一种方案的图标显示。(原因各有所好...)
2 .处理WIM文件时,如果发现这个WIM文件不是WIMTOOL制作的(应该很好确定),
就交给系统默认的程序来处理。
3.注册扩展时,不要直接使用固定的WIMTOOL的注册表键,可以从注册表中读取相应的键值。
从注册表读取以下键的默认值。然后根据这个值的指向来注册扩展
HKEY_CLASSES_ROOT\.wim
像装了WIMTOOL后。
这个值是Microsoft Windows Image
那注册扩展的位置就是
HKEY_CLASSES_ROOT\Microsoft Windows Image\
这样可以保证兼容。
如果以上都搞定了,就可以同时使用WIMTOOL(有右键扩展可以用直接调用)和WIMNT默认程序。
不知我的想法会不会太异想天开。呵呵。
忘了一点,不知目前的WIMHOOK支不支持参数传递。如果不支持还要加上参数传递。
你看本人的 DLL 注册,只有默认的图标和右键菜单才关联到WimTool
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.WIM]
@="Microsoft Windows Imaging Format (WIM)"
[HKEY_CLASSES_ROOT\Microsoft Windows Imaging Format (WIM)]
[HKEY_CLASSES_ROOT\Microsoft Windows Imaging Format (WIM)\DefaultIcon]
@="E:\\解压工具\\WimTool\\WimTool.EXE, 0"
;以下是菜单扩展
[HKEY_CLASSES_ROOT\Microsoft Windows Imaging Format (WIM)\ShellEx\ContextMenuHandlers\WimTool]
@="{E54C78A6-CD12-4F6C-92DE-E31A38B328D5}"
;以下是图标扩展
[HKEY_CLASSES_ROOT\Microsoft Windows Imaging Format (WIM)\ShellEx\IconHandler]
@="{E28F71B4-F8DA-4D5C-88A3-1D8A131EB4CD}"
;以下是执行扩展
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks]
"{E28F71B4-F8DA-4D5C-88A3-1D8A131EB4CD}"="WimTool ShellExecuteHooks"
1、默认的图标是 WimTool.EXE,0 ,不管是如何注册总要有一个默认的图标;
2、右键菜单实际上是调用 WimTool 工作,所以注册到 WimTool;
3、图标扩展和执行扩展并没有注册到 WimTool,执行扩展 GUID 后的 "WimTool ShellExecuteHooks"
是说明(描述),可以是任意字符,也可以是空。
与 WimTool 一同发放的 DLL 三种功能可以选择注册,如果不使用 WimTool 就不要注册
菜单扩展,因为菜单扩展是调用 WimTool 的,其余两种功能都可以离开 WimTool 使用,
执行扩展某些时候(调用 WinCMD 的 INI 配置文件)需 WinCMD.EXE 支持。
另,WimHook 支持传递参数,但由于是外壳扩展,须借壳运行,即不能在 CMD.EXE 窗口中直接
执行 WIM 文件,这是最大的不足。但也有很大的用途 ----- 同一个 WIM 文件,可以创建多个快捷
方式,可以做到每个快捷方式以不同的方式挂载、启动不同的程序、可设置是否自动卸载、可设置
卸载是否保存、可设置卸载后是否清除挂载目录等。
格式如下:目标WIM 路径\命令,传给命令的参数 /WIM:1,1,0,1
"/WIM:"后面的 "1,1,0,1" 分别表示挂载方式(是否可写)、是否自动卸载、卸载是否保存、卸载后是否清除挂载目录
以下是实例:D:\WIM应用示例\WimTool应用示例\WIM工具包.WIM "Autoruns-v9.01\AutoRuns.exe",afaae /WIM:1,1,0,1
这个实例将以设定的方式启动WIM内的Autoruns-v9.01\AutoRuns.exe,这个WIM内有多个工具,见图(这里的参数"afaae"无用的,
但如果是 CMD 批处理,这里的参数就有用了):
[ 本帖最后由 lxl1638 于 2008-3-14 12:20 AM 编辑 ] |
|