|
READ 和 WRIT 是 PECMD.EXE 近期新增的一对命令,本人先做一个应用示例
--- 将注册表中的有关路径传换成 INI 文件所在位置。
本人是拿论坛下载到的 DrWeb6.WIM 来试验的,DrWeb6.WIM 双击后固定挂到 C: 盘的固定目录来通过 CMD.EXE 控制运行,同时在 C: 留下一些垃圾(如扫描引擎、服务DLL),实在话 DrWeb6.WIM 应用 WimTool 组件的功能不十分好,也不到位。
本人的目的是想将 DrWeb6.WIM 应用到任意目录来运行,同时将 DrWeb6.WIM 的一些辅助目录(如扫描引擎、服务DLL)也移到 DrWeb6 的挂载目录。所以必须做到
1、修改 drweb32.ini 配置文件
2、修改 DrWeb.reg 注册表文件的相关路径;
3、修改复制、解压文件的相关路径。
其中第3点不难,用 CMD 批处理或 WimTool 组件中的 WinCMD.EXE 都容易实现;
第1点手工修改就可以了,当然可以参照第2点来修改,修改好的 drweb32.ini 要备一份在 WIM 内(如以 drweb32.ini.BAK 为名备份),
drweb32 更新时可能会将它恢复成默认设置,下次挂载后就用 drweb32.ini.BAK 恢复。
难点是第2点,修改 DrWeb.reg 中的相关路径,以下是 DrWeb.reg 的原内容,
蓝色部分就是要将其修改为 DrWeb6.WIM 的挂载路径(任意目录):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\DrWMenuHandlers]
@="{e7593602-124b-47c9-9f73-a69308edc973}"
[HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\DrWMenuHandlers]
@="{e7593602-124b-47c9-9f73-a69308edc973}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\DrWMenuHandlers]
@="{e7593602-124b-47c9-9f73-a69308edc973}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shellex\ContextMenuHandlers\DrWMenuHandlers]
@="{e7593602-124b-47c9-9f73-a69308edc973}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{e7593602-124b-47c9-9f73-a69308edc973}\InProcServer32]
@="C:\\DrWeb\\drwsxtn.dll"
"ThreadingModel"="Apartment"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{e7593602-124b-47c9-9f73-a69308edc973}]
@="Shell Extension for DrWeb"
[HKEY_CLASSES_ROOT\CLSID\{e7593602-124b-47c9-9f73-a69308edc973}\InProcServer32]
@="C:\\DrWeb\\drwsxtn.dll"
"ThreadingModel"="Apartment"
[HKEY_CLASSES_ROOT\CLSID\{e7593602-124b-47c9-9f73-a69308edc973}]
@="Shell Extension for DrWeb"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\DrWeb32W.Exe]
@="C:\\DrWeb"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\DrWeb32W.Exe]
"Path"="C:\\DrWeb"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\DrWeb Quarantine Files]
@="{B8140181-C6E4-49C2-95D4-F93FE8D2BD6E}"
"Priority"=dword:000000C8
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved\{e7593602-124b-47c9-9f73-a69308edc973}]
@="Shell Extension for DrWeb"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DrWebEngine\Parameters]
"SpamModuleName"="vrcpp.dll"
"VdbPath"="C:\\DrWeb\\Bases"
"SpamPath"="%CommonProgramFiles%\\Doctor Web\\Scanning Engine\\"
首先将 DrWeb.reg 修名为 DrWeb.TXT,并将其内容修改为:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\DrWMenuHandlers]
@="{e7593602-124b-47c9-9f73-a69308edc973}"
[HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\DrWMenuHandlers]
@="{e7593602-124b-47c9-9f73-a69308edc973}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\DrWMenuHandlers]
@="{e7593602-124b-47c9-9f73-a69308edc973}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shellex\ContextMenuHandlers\DrWMenuHandlers]
@="{e7593602-124b-47c9-9f73-a69308edc973}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{e7593602-124b-47c9-9f73-a69308edc973}\InProcServer32]
@="%CurDir%\\drwsxtn.dll"
"ThreadingModel"="Apartment"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{e7593602-124b-47c9-9f73-a69308edc973}]
@="Shell Extension for DrWeb"
[HKEY_CLASSES_ROOT\CLSID\{e7593602-124b-47c9-9f73-a69308edc973}\InProcServer32]
@="%CurDir%\\drwsxtn.dll"
"ThreadingModel"="Apartment"
[HKEY_CLASSES_ROOT\CLSID\{e7593602-124b-47c9-9f73-a69308edc973}]
@="Shell Extension for DrWeb"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\DrWeb32W.Exe]
@="%CurDir%"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\DrWeb32W.Exe]
"Path"="%CurDir%"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\DrWeb Quarantine Files]
@="{B8140181-C6E4-49C2-95D4-F93FE8D2BD6E}"
"Priority"=dword:000000C8
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved\{e7593602-124b-47c9-9f73-a69308edc973}]
@="Shell Extension for DrWeb"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DrWebEngine\Parameters]
"SpamModuleName"="vrcpp.dll"
"VdbPath"="%CurDir%\\Bases"
"SpamPath"="%CurDir%\\Scanning Engine\\"
接着用以下 PECMD/WinCMD 脚本将其转换成与当前目录匹配的注册表文件
_SUB DoLoop
READ %CurDir%\DrWeb.TXT,%CurLine%,CurLineText //读取一行到 CurLineText 中
WRIT %CurDir%\DrWeb.REG,$+0,%CurLineText% //将环境变量展开后写入 DrWeb.REG
CALC #CurLine = %CurLine% + 1 //到下一行了
_END
ENVI CurLine=1 //从第1行开始
READ %CurDir%\DrWeb.TXT,-1,LastLine //读取行数
LOOP #%CurLine%<%LastLine%,CALL DoLoop //通过循环转换各行的路径
然后通过 PECMD/WinCMD 脚本完成文件解压、复制、导入注册表、启动 DrWeb;
[ 本帖最后由 lxl1638 于 2010-6-13 12:52 编辑 ] |
|