无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: lxl1638
打印 上一主题 下一主题

[V1.30.2011.501版]WimTool -- Wim文件的图形视窗处理工具[无忧首发]

    [复制链接]
361#
 楼主| 发表于 2008-3-6 17:28:59 | 显示全部楼层
原帖由 secowu 于 2008-3-6 12:53 PM 发表
另:

扩展设置能否定位到文件后能够实现定位文件内部的图标?

如我选择shell32.dll里面有好多图标,能否直接在WimTool里可以选择?

目前版本,似乎没有这一说法?


用 WimIcon 设置图标,很简单的事,如何操作自己搞定。
回复

使用道具 举报

362#
 楼主| 发表于 2008-3-6 21:06:17 | 显示全部楼层
下载新的 WimIcon ,重建图标缓存。
回复

使用道具 举报

363#
 楼主| 发表于 2008-3-6 21:42:46 | 显示全部楼层
原帖由 玄天 于 2008-3-6 09:35 PM 发表
双击一个wim文件后, 首先执行"挂载后执行"中的项目接着立即就会执行"卸载前执行"中的项目


帖 CMD 内容来看看。
回复

使用道具 举报

364#
 楼主| 发表于 2008-3-6 21:45:41 | 显示全部楼层
原帖由 玄天 于 2008-3-6 09:37 PM 发表
你的 WimIcon 搞的不敢再用了,老是搞乱我桌面的图标顺序


应该是这样的,重设图标缓存后,图标按系统指定的顺序[桌面右键菜单==>排列图标(I)]排列。
回复

使用道具 举报

365#
 楼主| 发表于 2008-3-6 22:25:59 | 显示全部楼层
1、你的 游戏.wim 有两个 CMD (游戏.cmdun.cmd),你双击 WIM 执行 游戏.cmd
游戏.cmd 执行完之后就会执行 un.cmd 的,所以双击时会先执行 游戏.cmd ,再执行 un.cmd
你再设置一次,把 卸载前执行 的命令清空。

2、WimHook.DLL 已内置 WinCMD 的命令支持,你的CMD中可以直接使用,无需通过 PECMD 的。

3、Vista系统的图标问题在主题已说明:"无从解释,也无从解决"。在 Vista 系统中出现图标错乱是不认真看说明引起的。
回复

使用道具 举报

366#
 楼主| 发表于 2008-3-7 00:41:31 | 显示全部楼层
原帖由 玄天 于 2008-3-6 10:54 PM 发表

这样也限制 wimtool 的应用范围.....如果这两项不能同时填写的话,后面的那个对话框也失去了意义

现在是这样的:
挂载 wim 时执行: ---->挂载 wim 映像---->挂载之后执行---->卸载之前执行
卸载 wim 时执行: ---->卸载之前执行---->卸载 Wim 映像

如果这样
挂载 wim 时执行: ---->挂载 wim 映像---->挂载之后执行
卸载 wim 时执行: ---->卸载之前执行---->卸载 Wim 映像
是否更合理?


WimTool就是按这样设置的,只是在你这个WIM中,执行"挂载之后执行"很快结束,因为你的"挂载之后执行"仅仅是CMD命令,运行时间很短,运行完毕,马上就按顺序执行"卸载之前执行"了。

你的WIM执行执行过程之所以是:“挂载 wim 映像---->挂载之后执行---->卸载之前执行”,是因为你的蓝色部分 挂载之后执行 已经完成,接下来的命令就是红色部分"卸载之前执行"。

你可以参照本人上传的几个示例。
回复

使用道具 举报

367#
 楼主| 发表于 2008-3-8 14:13:16 | 显示全部楼层
原帖由 梅边吹笛 于 2008-3-8 01:32 PM 发表

谢谢朋友的解答!这个更换版本前我已经更新了。


可能要多做一些工作了:
1、将WIM解开重新压制;
2、如果安装了WIMNT的个性化图标,把它卸掉。

问题是有的,大家多反映,再更正。
或者你的系统很乱,你在PE系统中试验一下,因为PE系统比较纯正,如果PE系统中没有大问题就说明不是工具本身的事,是系统的事。
回复

使用道具 举报

368#
 楼主| 发表于 2008-3-8 22:31:12 | 显示全部楼层
注册 WimHook.DLL 没有???
你的系统不正常,可能没有注册 WimHook.DLL 或 注册表本部门了乱子。
回复

使用道具 举报

369#
 楼主| 发表于 2008-3-9 00:15:09 | 显示全部楼层
更新了,全套更新,如果问题不大,近期不再整了。
回复

使用道具 举报

370#
 楼主| 发表于 2008-3-9 00:36:01 | 显示全部楼层
WIM工具包.WIM内的"挂载后创建菜单.TXT"有一处错误:
ITEM DiskGenius V3.0.211,%ScanVirus%,%ScanVirus%
应为:
ITEM DiskGenius V3.0.211,%DiskGenius%,%DiskGenius%

[ 本帖最后由 lxl1638 于 2008-3-9 12:37 AM 编辑 ]
回复

使用道具 举报

371#
 楼主| 发表于 2008-3-9 00:52:02 | 显示全部楼层
不是很明白你的意思,你试过附件内的 WIM 没有?
回复

使用道具 举报

372#
 楼主| 发表于 2008-3-9 23:56:00 | 显示全部楼层
原帖由 nn2nn 于 2008-3-9 07:19 PM 发表
有进步,但回车也是按键。
更喜欢在WIMTOOL(GUI界面)注册。

GUI界面注册直观,有可选项。
命令行注册方便,方便的PE中注册,把命令行注册加入到PE的INI文件,让PE在启动过程中自动注册;
WimHook.DLL集成两样外壳扩展(图标扩展和执行扩展),可用PECMD或WinCMD分别注册:
STDAPI RegisterDll(BOOL bIcon, BOOL bHook); //注册函数
STDAPI UnRegisterDll(BOOL bIcon, BOOL bHook); //反注册函数

注册
//注册图标扩展
WinCMD.EXE CALL $WimHook.DLL,RegisterDll,#1,#0
//注册执行扩展
WinCMD.EXE CALL $WimHook.DLL,RegisterDll,#0,#1
//注册图标扩展和执行扩展
WinCMD.EXE CALL $WimHook.DLL,RegisterDll,#1,#1

卸载
//卸载图标扩展
WinCMD.EXE CALL $WimHook.DLL,UnRegisterDll,#1,#0
//卸载执行扩展
WinCMD.EXE CALL $WimHook.DLL,UnRegisterDll,#0,#1
//卸载图标扩展和执行扩展
WinCMD.EXE CALL $WimHook.DLL,UnRegisterDll,#1,#1
回复

使用道具 举报

373#
 楼主| 发表于 2008-3-12 23:11:28 | 显示全部楼层
原帖由 chenall 于 2008-3-12 10:47 PM 发表
楼主能否共享一下WIMHOOK的代码,让我等VC菜鸟也学习学习,


本人的 WimHook.DLL 是 VS2005 写的,你的 VC6 无法用(COM和类的定义都不同)。
这样吧,给你一份 VC6 能用的源码,是微软某某技术员写的 IShellExecuteHook 示例源码。
你就拿这个改,世界就是改来的。^_^

KBLaunch_demo.zip

36.26 KB, 下载次数: 47, 下载积分: 无忧币 -2

回复

使用道具 举报

374#
 楼主| 发表于 2008-3-13 20:30:06 | 显示全部楼层
原帖由 chenall 于 2008-3-12 11:28 PM 发表


VC6和VS2005的COM和类的定义不同,之前我就想改成用VS2005来编译那个ICONSHEX,
上网查了N多资料都没有找到解决办法,好像VS2003的可以。

VS2003的2003系统下又不让我装,所以就装了个VC6和VS2005。

...


老弟,有些东西搞起来不容易啊,你准备好没?

1、要加入 IShellExecuteHook ,必须 nn2nn 配合,通过 WIMNT 向 WIM 写入信息,
    你和 nn2nn 必须制定一套标准,WIMNT 向 WIM 的 XMLINFO 内写信息,你的 DLL
    读取这些信息,而在没有 XML 组件或类支持下,用 VC++ 读取WIM 的 XMLIFNO
    代码量很大。一旦加入微软的 XML 组件(另需 DLL 支持),DLL的体积和所占的内存
    也相当可怕。
2、这个 IShellExecuteHook COM 的 DLL 做起来不容易,虽然有微软的示例,但要在
    IShellExecuteHook 中开线程相当难处理,网上也有这方面的讨论,没有很好的解决
    方法,或者可以说几乎没有解决,正因如此,WimHook 也存在BUG。

或者你有什么建议,提出来,本人在 WimHook 里加入或完善。

[ 本帖最后由 lxl1638 于 2008-3-13 08:37 PM 编辑 ]
回复

使用道具 举报

375#
 楼主| 发表于 2008-3-13 22:51:37 | 显示全部楼层
原帖由 nn2nn 于 2008-3-13 09:54 PM 发表
不一定要用IShellExecuteHook!
1、IShellExecuteHook的作用是感知WIM文件的打开,这个通过WIM文件关联就可以解决了。
2、IShellExecuteHook是DLL,有一个实例的特点,如遇到要“等待”启动文件执行结束,再卸 ...


第一次(不是测试的)放出的 WimHook 是与 WinCMD 合并的,你当时说有点不值,所以后来就分开了。
另有两方面原因不合并了:
1、WinCMD.EXE 可以扩充作为一个工具,相当于 DOS 下的 WBAT,如果合并就不能作为一个工具使用了,
      也打算在 WinCMD 中加入文本标签、文本编辑框(即你所说的 INPUT)。
2、现在已将"菜单扩展"、"图标扩展"、"执行扩展"三合为一,用回以前的文件名 "WimShExt.DLL",如果再
      与 WinCMD 合并,这个 DLL 的体积和所占内存就不理想了。现在三合一是23K左右。

另,EXE只要一个实例可以做到,但难度大(共享内存或消息投递可以完成),占内存也大(一个有消息循环的窗口耗内存有3M以上,如果用Delphi做,6M以上的内存是常有的事)

[ 本帖最后由 lxl1638 于 2008-3-13 10:54 PM 编辑 ]
回复

使用道具 举报

376#
 楼主| 发表于 2008-3-13 23:45:38 | 显示全部楼层
原帖由 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 编辑 ]

未命名.PNG (23.09 KB, 下载次数: 142)

未命名.PNG
回复

使用道具 举报

377#
 楼主| 发表于 2008-3-14 00:07:53 | 显示全部楼层
原帖由 nn2nn 于 2008-3-13 11:54 PM 发表
现在说的合并是并为EXE文件,不要IShellExecuteHook。
通过WinCMD.EXE来完成"执行扩展"。

如果要花3M以上的内存,就不必了,(没意义了)。
如果用COM+ 的服务形式,也可以传递参数,但已和DLL没有多大区别 ...


现在稳定性应无问题了 ----- 本人正在测试,所有的功能都正常,周未再给大家测试。

以前的确有问题,原因是在 IShellExecuteHook 内开线程非常困难,现在总算找到方法了。
回复

使用道具 举报

378#
 楼主| 发表于 2008-3-15 20:05:40 | 显示全部楼层
又到周未更新了,这个版本真正让WIM文件走向实用,还有一个功能强大的 WinCMD.EXE。
回复

使用道具 举报

379#
 楼主| 发表于 2008-3-16 00:05:21 | 显示全部楼层
原帖由 nn2nn 于 2008-3-15 11:45 PM 发表
看WinCMD功能演示,觉得WinCMD的“WIN”才有点贴题。

WinCMD现在功能更强大了,能解决很多CMD的老大难问题。
WinCMD再加上几个常用的组件。如选择框。
WinCMD的组件够自由了,就是排位比较难,希望很快就能 ...


会死人的,太难了,有空再算。
回复

使用道具 举报

380#
 楼主| 发表于 2008-3-16 09:00:56 | 显示全部楼层
1、更新时先卸载旧版的DLL,重启后将旧版的DLL删除,再注册新版的DLL;
2、也要卸载WIMNT提供的DLL和文件关联;
3、WimTool成套工具(WimToo.EXE、WimIcon.EXE、WinCMD.EXE、WimShExt.DLL)
    要位于同一目录。

如果这些文件不在同一目录,不会弹出右键菜单的,也无法执行WIM内的INI文件。
如果Vista系统,所有问题本人不管。

[ 本帖最后由 lxl1638 于 2008-3-16 09:02 AM 编辑 ]
回复

使用道具 举报

381#
 楼主| 发表于 2008-3-16 12:50:32 | 显示全部楼层
肯定是你的问题吧,nn2nn 机子中已注册了 WIMNT 都可以搞定。
回复

使用道具 举报

382#
 楼主| 发表于 2008-3-16 16:35:55 | 显示全部楼层
原帖由 nn2nn 于 2008-3-16 04:13 PM 发表
EXEC 还有几个前导符号,可以打开TXT。


其实本人提供的示例已很有代表性了,一些不是 EXE、CMD、BAT 之类的可执行文件可以借壳运行,其中有两个示例:
磁盘整理和WIM都不是可执行文件,附件的例子就是借壳运行。
另,EXEC 命令也有丰富的参数和前导,好好利用,也可以解决一些问题。
回复

使用道具 举报

383#
 楼主| 发表于 2008-3-16 16:44:12 | 显示全部楼层
请使用 WimTool 的到1楼更新 DLL,解决了与RAR冲突的BUG,RAR应无问题了,
可能 WIM 会有问题(没有详细测试)。
回复

使用道具 举报

384#
 楼主| 发表于 2008-3-16 16:46:27 | 显示全部楼层
原帖由 secowu 于 2008-3-16 04:43 PM 发表
不过,示例包似乎有个问题,查看信息显示关闭后会自动卸载的。。

实际中,并没有卸载MOUNTPATH里的东东。。。是啥回事?


你注册 DLL 没有,如果没有注册 DLL 不会自动卸载的。
你也可以在 INI 里加入自动卸载的命令(通过WinCMD完成)。
回复

使用道具 举报

385#
 楼主| 发表于 2008-3-16 19:18:07 | 显示全部楼层
原帖由 lvyanan 于 2008-3-16 07:14 PM 发表
始终支持Wimtool,再顶上去。


有些东西你来搞可能更好(看过你那一键恢复的注释想到的)。
回复

使用道具 举报

386#
 楼主| 发表于 2008-3-16 23:44:04 | 显示全部楼层
原帖由 gd510090 于 2008-3-16 11:38 PM 发表
%V4%,EXEC explorer.exe %CurDir%\%V4%,%V1%,23
23是问号
请问:记事本的图标是那个数字?谢谢!
菜鸟依样画葫芦,虽然弄出来了,但还是不懂。呵呵!能用就行了。


可以用 WimIcon.EXE 查看 EXE、DLL 文件的图标。

未命名.PNG (71.6 KB, 下载次数: 157)

未命名.PNG
回复

使用道具 举报

387#
 楼主| 发表于 2008-3-17 01:22:12 | 显示全部楼层
原帖由 玄天 于 2008-3-17 12:05 AM 发表
注册不上右键还是 WimShExt.DLL 的问题,用 1.0.8.316 不光正常系统注册不上,连 PE 里也注册不上,后来用 1.0.8.226 替换都可注册


你将你的文件列表帖上来,最好有图。
回复

使用道具 举报

388#
 楼主| 发表于 2008-3-17 11:11:52 | 显示全部楼层
原帖由 玄天 于 2008-3-17 02:43 AM 发表
就在一楼下载的 1.0.8.316:
WimShExt.DLL
WinCMD.EXE
WimTool.EXE
将这几个全部拷贝到system32目录(删除原有的)


欠 WimIcon.EXE,也不用放 SYSTEM32 目录。

在 V1.08.0308F版已作了醒目的说明:
注意:先卸载旧版的DLL,用新版DLL复盖,重新注册。
WimTool.EXE、WimIcon.EXE、WinCMD.EXE、WimHook.DLL 和 WimMenu.DLL

五个文件必须位于同一目录,如果它们在可写位置上,附件中的 WIM工具包.WIM 可以双击直接使用,
否则要设置其挂载目录
回复

使用道具 举报

389#
 楼主| 发表于 2008-3-17 12:34:06 | 显示全部楼层
原帖由 玄天 于 2008-3-17 11:54 AM 发表
晕,居然要 WimIcon.EXE,下载后里面也没个文件列表~~~
还需要 WimMenu.DLL ? 下载的文件这没有这东东


WimTool.EXE、WimShExt.DLL、WimIcon.EXE 三个文件必须同目录。
WinCMD.EXE 是可选,执行 WIM 内的 INI 文件必须,如果不执行 INI 文件可不要。
回复

使用道具 举报

390#
 楼主| 发表于 2008-3-17 12:37:16 | 显示全部楼层
WimTool-V1.0.8.0316版的附件内有:

WimTool.EXE、
WimIcon.EXE、
WimShExt.DLL、
WinCMD.EXE、
Autoruns-v9.01.WIM、
WinCMD功能演示.CMD、
WinCMD功能演示.INI、
卸载功能.TXT、
注册功能.TXT

共9个文件啊,你怎么下载不全的?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-22 17:32

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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