无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: mdyblog
打印 上一主题 下一主题

[更新376#2825]PECMD2012.1.80.13_Win32_64.多窗口多线程.裸机系统2.3.3.1+18M酷M...

    [复制链接]
4411#
发表于 2013-2-3 09:29:09 | 只看该作者
原帖由 mdyblog 于 2013-2-2 23:55 发表


除非删除一些功能,否则总是免不了的。
有些 特殊技术的代码(代码拼装,代码自修改等), 很容易引起 不靠普 的软件的误报。

用的时间长了, 这些软件就会 将改版本的PECMD加入杀软中,不误报了。
No ...

------------------------------
讨论:特殊技术的代码(代码拼装,代码自修改等), 都是各类病毒和木马的看家本领,没有这些就没有病毒存在了,这是本质,所以,要杀毒软件不报,除非,天下无毒了O(∩_∩)O~
         但话说回来,这些技术,本来是非常有益的,只是被居心不良者利用罢了。所以,支持楼主的说法,清者自清,久了,就知道谁好谁坏了,不必太在乎2b的杀毒
         再说,没有这些好的技术,程序的功能性会被阉割的--东厂的产物

话说楼主,“词语分断 ENVI &&&Arg=*[分断字符集]被分断字符串”的功能,是否支持了自定字符的分段了?这个功能其实非常的拉风,加上代码拼装和自修改的话,可以实现很多实际意义的加速效果,配置文件功能会更强大
回复

使用道具 举报

4412#
 楼主| 发表于 2013-2-3 10:38:54 | 只看该作者
原帖由 2012yws@ 于 2013-2-3 09:29 发表

------------------------------
讨论:特殊技术的代码(代码拼装,代码自修改等), 都是各类病毒和木马的看家本领,没有这些就没有病毒存在了,这是本质,所以,要杀毒软件不报,除非,天下无毒了O(∩_∩) ...

1:“词语分断 ENVI &&&Arg=*[分断字符集]被分断字符串”的功能,是否支持了自定字符的分段了?
A: 是的,支持。
    可用来做词法分析。
    参见 WCS2HTMLBBS.WCS

2:特殊技术的代码(代码拼装,代码自修改等),
对PECMD 好像是必须的。
1) 关机菜单 就是 代码自修改,修改MS 的默认 响应命令, 调用 PECMD 关机命令。
      还有   EXEC 的  HOOK  选项 是代码自修改。
2) UPNP 就是 代码拼装。 否则 BartPE.EXE 需要单独作为一个文件,来调用。
3) 代码拼装技术。可以用来直接在内存执行内置的其它外部程序。 即把 外部程序和脚本全部内置到PECMD.exe中。做成一个程序。
     运行时,不象7Z/WINRAR 等需要向磁盘释放 文件。


大概 只有  关机菜单 就是 代码自修改,是必不可少。看看能不能用其它通用技术实现。
XPPE的 UPNP命令 大概可以不要了。可以放到外面,兼容XPPE。

1)关机菜单  代码自修改, 是不是可以单独做成一个小程序PECMDLauncher.exe 或PECMDLauncher.DLL,隔离PECMD.EXE。
         用来 加载EXPLOER.exe  。
2)或 提供一个工具来个EXPLOR.EXE 打补丁。可以做一个小DLL   PeShutdown.dll,  用 工具让 EXPLOR.EXE 自动加载  PeShutdown.dll。
用起来挺麻烦的。多了文件和操作。

[ 本帖最后由 mdyblog 于 2013-2-3 10:48 编辑 ]
回复

使用道具 举报

4413#
发表于 2013-2-3 11:25:01 | 只看该作者
pecmd 能调用系统ping函数吗? ping.exe大概要消耗100毫秒才能返回,而ping函数可以在几毫秒内返回.
回复

使用道具 举报

4414#
 楼主| 发表于 2013-2-3 11:33:00 | 只看该作者
原帖由 2011hwo1 于 2013-2-3 11:25 发表
pecmd 能调用系统ping函数吗? ping.exe大概要消耗100毫秒才能返回,而ping函数可以在几毫秒内返回.

系统没有PING函数的。
需要自己写。
可以写一个 PING.DLL。
PECMD 调用PING.DLL的PING函数 。

PECMD 的SOCK 功能,可能 用以实现 PING 函数。

[ 本帖最后由 mdyblog 于 2013-2-3 11:34 编辑 ]
回复

使用道具 举报

4415#
发表于 2013-2-3 15:38:04 | 只看该作者
看两者的说明是不一样的:
1、PECMD4.0:WAIT 0可检测用户的按键'A'~'Z'或'0'~'9',省略变量名时按键结果保存在环境变量%PressKey%中。
2、PECMD2012:WAIT 0/-N可检测用户的按键。'A'~'Z'或'0'~'9',直接返回,否则以0xNN的形式返回。变量名默认为PressKey。

这个与4.0是不兼容的,希望大家注意。

[ 本帖最后由 hhh333 于 2013-2-3 16:50 编辑 ]
回复

使用道具 举报

4416#
发表于 2013-2-3 17:35:05 | 只看该作者
原帖由 mdyblog 于 2013-2-3 10:38 发表

1:“词语分断 ENVI &&&Arg=*[分断字符集]被分断字符串”的功能,是否支持了自定字符的分段了?
A: 是的,支持。
    可用来做词法分析。
    参见 WCS2HTMLBBS.WCS

2:特殊技术的代码(代码拼装,代码 ...

-------------------------------------------------------------------------
1、A: 是的,支持。
呵呵,这样太好了,有空就试试看,效果如何?

2、2:特殊技术的代码....提供一个工具来个EXPLOR.EXE 打补丁。可以做一个小DLL   PeShutdown.dll...
其实,这个技术的问题,在VC2013的新更新的核心中就已经声明了全面增强这个内存平装技术,用来解决多线程和64位代码的问题,楼主如果因为2b误报而放弃,对程序的发展而言,不是好事。再有,即便是用DLL,一样是会报毒的,只要你没象微软一样给出声明类的接口来处理,就一定的!只是,如果给出这个接口,程序的安全和稳定相信也会有很多的隐患,不知我的理解对不对?
回复

使用道具 举报

4417#
 楼主| 发表于 2013-2-3 19:09:24 | 只看该作者
原帖由 hhh333 于 2013-2-3 15:38 发表
看两者的说明是不一样的:
1、PECMD4.0:WAIT 0可检测用户的按键'A'~'Z'或'0'~'9',省略变量名时按键结果保存在环境变量%PressKey%中。
2、PECMD2012:WAIT 0/-N可检测用户的按键。'A'~'Z'或'0'~'9',直接返 ...


PECMD2012 的  WAIT 兼容 PECMD4.0 的 WAIT。 只是增强了功能。

比如:
WAIT 0,PKEY
MESS  [%PKEY%] @#OK

都是等待
用户按键。 按键'A'~'Z'或'0'~'9',返回对应的字母。这都是一样的。


PECMD2012  在此i持基础增强了。
按其它键时, PECMD4.0 无法区别。
                   PECMD2012  返回0xNN 的键码。


PECMD2012  还提供了 WAIT  -0 或 WAIT -cont   -0  来检测键盘,这个不阻塞,立即返回。

[ 本帖最后由 mdyblog 于 2013-2-3 19:13 编辑 ]
回复

使用道具 举报

4418#
 楼主| 发表于 2013-2-3 20:04:16 | 只看该作者

调用内置的程序

PECMD2012.1.73.1-130202.多窗口线程孵化版_win32.sfx.zip

甲: 调用内置的程序
┃※执行内嵌程序。可以--exe:传递 或 命令首词传递。#数字 为直接在内存执行;*#数字 为放入自动删
┃  除的临时文件执行。数字为资源EXEDATA下的号码,可以CMPS压缩。很多程序必须用后者。
EXEC --exe:#100
EXEC --exe:*#100


1: 程序内置到MYPECMD.exe
以cmd.exe 为例。
1) CMPS 压缩
CMPS  cmd.exe cmd.CMZ

2) cmd.CMZ 加入 MYPECMD.EXE  的 资源 EXEDATA ,编号 100

2: 运行 内置的  cmd.CMZ
EXEC --exe:#100     cmd /c dir     //内存中运行
EXEC --exe:*#100    cmd /c dir     //自动生成一个临时文件,执行之;完毕自动删除。一定能删除,比WINRAR干净。


乙:EXEC --wd:**   
EXEC --wd:**    ... ...

--wd:** 指执行文件自身的目录。

这可以用来执行自解压文件。
WINRAR 制作自释放时:
    安静模式 = 全部隐藏
    不要 “解包到临时文件夹” !!!
    解压路径 为空。 (表示当前目录)。
自解压文件放入  MYPECMD.EXE  的 资源 EXEDATA ,编号 100

EXEC --wd:**  --exe:*#100     命令即参数
这样, 在一个PECMD自动删除的临时目录中,运行该自释放文件。 该程序退出后,PECMD将整个临时目录自动删除,包刮释放出来的文件。
  这个比WINRAR 的自删除 要可靠, 删除很干净。即使暂时文件还在 使用,还有文件在运行, PECMD还会删除它们。


丙: 生成唯一的临时文件或临时目录
┃TEMP [*del] *tmpdir   [,]变量名                //生成唯一的临时目录
┃TEMP [*del] *tmpfile  [,]变量名[,目录变量名]   //生成唯一的临时文件  
*del 为本程序(PECMD)退出时自动删除
TEMP *del *tmpfile  ,&&FName,&&Dir
MESS  [%&FName%] \n[%&DIR%]  @ #OK



  






[ 本帖最后由 mdyblog 于 2013-2-3 20:09 编辑 ]
回复

使用道具 举报

4419#
 楼主| 发表于 2013-2-5 01:26:13 | 只看该作者

PING.WCS

原帖由 2011hwo1 于 2013-2-3 11:25 发表
pecmd 能调用系统ping函数吗? ping.exe大概要消耗100毫秒才能返回,而ping函数可以在几毫秒内返回.


PECMD 写的 PING 函数。
PING.WCS (包内有)
需要管理员运行。

支持广播地址
CALL PING  192.168.1.255

[ 本帖最后由 mdyblog 于 2013-2-5 11:38 编辑 ]
回复

使用道具 举报

4420#
发表于 2013-2-5 19:07:43 | 只看该作者
130202版使用 SHUT R
重启的时候导致找不到hal.dll
在三台不同的电脑上都是这样。

[ 本帖最后由 2012得了 于 2013-2-5 22:07 编辑 ]
回复

使用道具 举报

4421#
 楼主| 发表于 2013-2-5 22:36:44 | 只看该作者
原帖由 2012得了 于 2013-2-5 19:07 发表
130202版使用 SHUT R
重启的时候导致找不到hal.dll
在三台不同的电脑上都是这样。

给个截图吧。

好像是文件系统出问题了吧,RAMDISK破坏了?

我在MBROS2.3.1 中测试,SHUT R 正常。

[ 本帖最后由 mdyblog 于 2013-2-5 23:37 编辑 ]
回复

使用道具 举报

4422#
 楼主| 发表于 2013-2-5 22:43:08 | 只看该作者
原帖由 2011hwo1 于 2013-2-3 11:25 发表
pecmd 能调用系统ping函数吗? ping.exe大概要消耗100毫秒才能返回,而ping函数可以在几毫秒内返回.


IPHLPApi.DLL 的确有PING 函数, 不过不能接调用,需要组合。

PECMD2012.1.73.1-130205.多窗口线程孵化版_win32.sfx.zip 可以。
PING2.WCS (包内有)【普通用户也可用】:
ENVI &&&EnviMode=1
//常数
ENVI &&INVALID_HANDLE=0xFFFFFFFF  //-1 的ULONG 形式
//PING 主机 返回名
// 返回1:成功  0:失败
_SUB PING
        ENVI  %2=0
        ENVI#$ &&SendData = 0x31 0x32 0x33 0x34 0x35 0x36  //发送数据
        ENVI-addr  &&pSendData;&&lSendData=&SendData
        
        ENVI#$ &&ReplyBuffer= *1060 0x00    //接收缓存区
        ENVI-addr  &&pReplyBuffer;&&lReplyBuffer=&ReplyBuffer
        
        SOCK --gethostbyname# &&IP;%~1   //转换成整数IP
        
        ENVI &&hIcmpFile=
        CALL $**ret:&hIcmpFile  IPHLPApi.DLL,IcmpCreateFile
        FIND $X%&INVALID_HANDLE% = X%&hIcmpFile%, EXIT  //失败
        CALL $**ret:&&__ret  IPHLPApi.DLL,IcmpSendEcho,#%&hIcmpFile% ,#%&IP%,#%&pSendData% ,#%&lSendData%,#0 ,#%&pReplyBuffer% ,#%&lReplyBuffer% ,#1000
    CALL $**ret:&&ret3  IPHLPApi.DLL,IcmpCloseHandle,#%&hIcmpFile%
        ENVI  %2=%&__ret%
_END

FIND $1 = %&&__MAIN__%,  //END_IMPORT
FIND $X=X%1, CALL TEST! CALL PING %*
_SUB TEST
        ENVI &&RET=
        ENVI &&HOST=www.sina.com.cn   //127.0.0.1
        PING %&&HOST% &RET
        MESS  PING %&&HOST% = %&RET%
_END  


这个版本的CALL $配合 ENVI????? &,理论上可以使用任意函数。(不超过20(C调用为100)个参数,够了了吧)。



[ 本帖最后由 mdyblog 于 2013-2-6 09:13 编辑 ]
回复

使用道具 举报

4423#
发表于 2013-2-6 20:15:15 | 只看该作者
DATE [变量名] gmt
gmt 秒数是怎么计算出来的?
回复

使用道具 举报

4424#
 楼主| 发表于 2013-2-6 22:40:44 | 只看该作者
原帖由 2011hwo1 于 2013-2-6 20:15 发表
DATE [变量名] gmt
gmt 秒数是怎么计算出来的?


国际标准:
1970.1.1    0点开始计时的秒数。
回复

使用道具 举报

4425#
发表于 2013-2-7 10:35:04 | 只看该作者
原帖由 mdyblog 于 2013-2-5 22:43 发表


IPHLPApi.DLL 的确有PING 函数, 不过不能接调用,需要组合。

PECMD2012.1.73.1-130205.多窗口线程孵化版_win32.sfx.zip 可以。
PING2.WCS (包内有)【普通用户也可用】:
ENVI &&&EnviMode=1
//常数
...

====最新的孵化版与稳定版的测试报告--只贴上差异之处====
孵化版:
[EXEC !"X:\Program Files\winrar\REGDOC.CMD"] <0>:操作成功完成。
[EXEC !REGEDIT /S "X:\Program Files\UltraISO\ULTRAISO.REG"] <0>:操作成功完成。
DrvLoad安装驱动[X:\Windows\inf\netxe32.inf]<0>
。。。。。。
[DEVI X:\Windows\inf\net*.inf] <0>:操作成功完成。
[EXEC @!=netcfg.exe -winpe] <0>:操作成功完成。
[EXEC @!=netcfg.exe -c s -i MS_Server] <0>:操作成功完成。
[EXEC @!=netcfg.exe -c s -i ms_nativewifip] <0>:操作成功完成。
[EXEC @!=netcfg -e -c p -i MS_NDISUIO] <0>:操作成功完成。
[EXEC @!=netcfg.exe -e -c p -i MS_NDISWAN] <0>:操作成功完成。
[EXEC @!=netcfg.exe -e -c p -i MS_PPPOE] <0>:操作成功完成。
[SERV Spooler] <0>:操作成功完成。
[SERV Wlansvc] <0>:操作成功完成。

稳定版:
[EXEC !"X:\Program Files\winrar\REGDOC.CMD"] <2>:系统找不到指定的文件。
[EXEC !REGEDIT /S "X:\Program Files\UltraISO\ULTRAISO.REG"] <2>:系统找不到指定的文件。
。。。。。。
DrvLoad安装驱动[X:\Windows\inf\netxe32.inf]<0>
[DEVI X:\Windows\inf\net*.inf] <0>:操作成功完成。
[EXEC @!=netcfg.exe -winpe] <2>:系统找不到指定的文件。
[EXEC @!=netcfg.exe -c s -i MS_Server] <2>:系统找不到指定的文件。
[EXEC @!=netcfg.exe -c s -i ms_nativewifip] <2>:系统找不到指定的文件。
[EXEC @!=netcfg -e -c p -i MS_NDISUIO] <2>:系统找不到指定的文件。
[EXEC @!=netcfg.exe -e -c p -i MS_NDISWAN] <2>:系统找不到指定的文件。
[EXEC @!=netcfg.exe -e -c p -i MS_PPPOE] <2>:系统找不到指定的文件。
[SERV Spooler] <0>:操作成功完成。
[SERV Wlansvc] <1068>:依赖服务或组无法启动。
--------------------------
以下可否请楼主实现它,因为这些在4。0中都能正确执行:

[CALL $X:\Windows\System32\Macromed\Flash\Flash10k.ocx] <2147500034>:不支持此接口
[CALL $inetcomm.dll] <2147500034>:不支持此接口
[CALL $X:\Windows\SYSTEM32\sysmon.ocx] <2147500033>:尚未实现
说明:以上是4。0的代码,如果为代码的问题,请问2012的正确代码如何写?如果不是,请楼主实现,谢谢。

--------------------------
以下的正确意思:
[FILE E:\Pagefile.sys] <124>:系统调用级别不正确。
[TEAM FILE C:\Pagefile.sys|FILE D:\Pagefile.sys|FILE E:\Pagefile.sys] <1349>:令牌的类型对其尝试使用的方法不适当。
现在个人理解为“由于文件不存在,程序抛出的异常信息”,请问理解是否对?可否请楼主详细解说?

[ 本帖最后由 2012yws@ 于 2013-2-7 10:42 编辑 ]
回复

使用道具 举报

4426#
发表于 2013-2-7 17:21:34 | 只看该作者
FORX命令能不能支持cmd下dir命令所支持的/o的有命令选项,或者dir命令支持的所有选项,这样dir命令可以去掉了,而且速度比dir命令快.
回复

使用道具 举报

4427#
 楼主| 发表于 2013-2-7 18:12:47 | 只看该作者
原帖由 2012yws@ 于 2013-2-7 10:35 发表

====最新的孵化版与稳定版的测试报告--只贴上差异之处====
孵化版:
[EXEC !"X:\Program Files\winrar\REGDOC.CMD"] :操作成功完成。
[EXEC !REGEDIT /S "X:\Program Files\UltraISO\ULTRAISO.REG"] :操 ...


1: 稳定版已修正

2: 以下的正确意思:
[FILE E:\Pagefile.sys] <124>:系统调用级别不正确。
[TEAM FILE C:\Pagefile.sys|FILE D:\Pagefile.sys|FILE E:\Pagefile.sys] <1349>:令牌的类型对其尝试使用的方法不适当。
现在个人理解为“由于文件不存在,程序抛出的异常信息”,请问理解是否对?可否请楼主详细解说?

A:
由于文件不存在,程序 返回 函数的错误码。

FILE 调用的函数比较复杂, 返回值比较难懂。
FILE 错误码124:
文件路无效.

PECMD 虽然 C++ 变编的,但是为了缩小体积,禁止了 异常 机制。
这里的错误是函数的返回值, 或 GetLastError() 取得。
PECMD 的 错误码 不要太认真。 一般保证0为成功,非0不成功。


3:
[CALL $X:\Windows\System32\Macromed\Flash\Flash10k.ocx] <2147500034>:不支持此接口
[CALL $inetcomm.dll] <2147500034>:不支持此接口
[CALL $X:\Windows\SYSTEM32\sysmon.ocx] <2147500033>:尚未实现
说明:以上是4。0的代码,如果为代码的问题,请问2012的正确代码如何写?如果不是,请楼主实现,谢谢。

A:
(1)是不是先要 转移到 目标目录
PATH   @X:\Windows\System32\Macromed\Flash
或  
CALL $**cd  X:\Windows\System32\Macromed\Flash\Flash10k.ocx

(2) 还有 改 DLL、OCX正常吗?

(3) 是不是需要其它DLL、OCX支持。顺序有问题吗?
上面的返回码,可能是 改DLL、OCX 是执行了,当内部错误,内部返回上面返回码, PECMD 直接返回 这些 返回码。
inetcomm.dll 可能需要先调用其它 DLL、OCX 。

(4) 可以用MS 的 regsvr32.exe 先试试。

[ 本帖最后由 mdyblog 于 2013-2-8 10:54 编辑 ]
回复

使用道具 举报

4428#
 楼主| 发表于 2013-2-7 18:14:23 | 只看该作者
原帖由 2011hwo1 于 2013-2-7 17:21 发表
FORX命令能不能支持cmd下dir命令所支持的/o的有命令选项,或者dir命令支持的所有选项,这样dir命令可以去掉了,而且速度比dir命令快.


CMD.EXE  是必须的。
PECMD 不是要取代一切。 主要是 一个 图形化脚本 解释器。

其它不常见的排序, 可以用脚本实现。
先 FORX 全部读进来。
再 FORX  排序。

[ 本帖最后由 mdyblog 于 2013-2-7 18:52 编辑 ]
回复

使用道具 举报

4429#
 楼主| 发表于 2013-2-7 22:37:30 | 只看该作者

命令别名: PECMD2012.1.73.1-130207-3.多窗口线程孵化版_win32.sfx.zip

1: 定义 命令别名
ENVI  &&&Alias 命令别名=命令部分


命令部分 可以是个复杂部分,包刮部分参数。


2: 使用别名
命令别名 可以直接  当作 内部命令。

ENVI  &&&Alias  MyMess=mess+icon4


MyMess  HELLO

3: 可以用来 直接导入 DLL 的函数
如:

//导入  IPHLPApi.DLL 的函数 IcmpCreateFile
ENVI &&&Alias IcmpCreateFile=CALL $**ret:*  IPHLPApi.DLL,IcmpCreateFile,

// 使用 别名 IcmpCreateFile
IcmpCreateFile  &hIcmpFile  //打开ICMP句柄,返回值赋给 &hIcmpFile


[ 本帖最后由 mdyblog 于 2013-2-7 22:41 编辑 ]
回复

使用道具 举报

4430#
 楼主| 发表于 2013-2-8 10:57:12 | 只看该作者
FILE 错误码

113
The source and destination files are the same file.
114
Multiple file paths were specified in the source buffer, but only one destination file path.
115
Rename operation was specified but the destination path is a different directory. Use the move operation instead.
116
The source is a root directory, which cannot be moved or renamed.
117
The operation was canceled by the user, or silently canceled.
118

The destination is a subtree of the source.

120

Security settings denied access to the source.

121

The source or destination path exceeded or would exceed MAX_PATH.

122

The operation involved multiple destination paths, which can fail in the case of a move operation.

124

文件路径无效.

125

The source and destination have the same parent folder.

126

The destination path is an existing file.

128

The destination path is an existing folder.

129

The name of the file exceeds MAX_PATH.

130

The destination is a read-only CD-ROM, possibly unformatted.

131

The destination is a read-only DVD, possibly unformatted.

132

The destination is a writable CD-ROM, possibly unformatted.

133

The file involved in the operation is too large for the destination media or file system.

134

The source is a read-only CD-ROM, possibly unformatted.

135

The source is a read-only DVD, possibly unformatted.

136

The source is a writable CD-ROM, possibly unformatted.

183

MAX_PATH was exceeded during the operation.

10026

未知错误. 通常是路径无效.(Vista之前版本才有)

65536

An unspecified error occurred on the destination.

65652

Destination is a root directory and cannot be renamed.




[ 本帖最后由 mdyblog 于 2013-2-8 11:01 编辑 ]
回复

使用道具 举报

4431#
发表于 2013-2-10 10:36:34 | 只看该作者
WCS关联批处理文件有错误,内容应该为:
::@echo off
SET BASEDIR=%~dp0
set BASEDIR_=%BASEDIR%
set SystemRoot_=%SystemRoot%

SET PECMD=PECMD.EXE
if exist "%BASEDIR%PECMD.EXE" SET PECMD=\"%BASEDIR_%PECMD.EXE\"
if exist "%BASEDIR%PECMD.NTR" SET PECMD=\"%BASEDIR_%PECMD.NTR\"
if exist %SystemRoot%\SYSTEM32\PECMD.EXE SET PECMD=%SystemRoot_%\SYSTEM32\PECMD.EXE
if exist %SystemRoot%\SYSTEM32\PECMD.NTR SET PECMD=%SystemRoot_%\SYSTEM32\PECMD.NTR

SET EDIT=notepad
if exist "X:\Program Files\ULTRAEDT\UEDIT32.EXE" SET EDIT=\"X:\Program Files\ULTRAEDT\UEDIT32.EXE\"
if exist X:\Programs\ULTRAEDT\UEDIT32.EXE        SET EDIT=X:\Programs\ULTRAEDT\UEDIT32.EXE
if exist X:\Program\ULTRAEDT\UEDIT32.EXE         SET EDIT=X:\Program\ULTRAEDT\UEDIT32.EXE
if exist X:\Program1\ULTRAEDT\UEDIT32.EXE        SET EDIT=X:\Program1\ULTRAEDT\UEDIT32.EXE
if exist "C:\Program Files\ULTRAEDT\UEDIT32.EXE" SET EDIT=\"C:\Program Files\ULTRAEDT\UEDIT32.EXE\"
if exist "%BASEDIR%UEDIT32.EXE" SET EDIT=\"%BASEDIR_%UEDIT32.EXE\"

SET EDIT2=-
if exist %SystemRoot%\SYSTEM32\PECMDEDIT.EXE SET EDIT2=%SystemRoot_%\SYSTEM32\PECMDEDIT.EXE
if exist %SystemRoot%\SYSTEM32\PECMDEDIT.NTR SET EDIT2=%SystemRoot_%\SYSTEM32\PECMDEDIT.NTR
if exist %SystemRoot%\SYSTEM32\PECMDEDIT.NTR SET EDIT2=%SystemRoot_%\SYSTEM32\PECMDEDIT.NTR
if exist %SystemRoot%\SYSTEM32\PECMDEDIT.NTR SET EDIT2=%SystemRoot_%\SYSTEM32\PECMDEDIT.NTR
if exist "%BASEDIR%PECMDEDIT.EXE" SET EDIT2=\"%BASEDIR_%PECMDEDIT.EXE\"
if exist "%BASEDIR%PECMDEDIT.NTR" SET EDIT2=\"%BASEDIR_%PECMDEDIT.NTR\"

REG ADD HKCR\.ntr   /ve  /d exefile  /f
REG ADD HKCR\.nte   /ve  /d exefile  /f
REG ADD HKCR\.ntx   /ve  /d exefile  /f
REG ADD HKCR\.wcs   /ve  /d wcsfile  /f
REG ADD HKCR\.wce   /ve  /d wcsfile  /f
REG ADD HKCR\.wcx   /ve  /d wcsfile  /f
REG ADD HKCR\.wci   /ve  /d wcsfile  /f
REG ADD HKCR\wcsfile   /ve  /d "WCS 脚本文件"  /f
REG ADD HKCR\wcsfile\DefaultIcon /ve   /d "%PECMD%",0  /f
REG ADD HKCR\wcsfile\shell\open\command /ve   /d  "%PECMD% LOAD \"%%L\""  /f
REG ADD HKCR\wcsfile\shell\Edit\command /ve   /d  "%EDIT% \"%%L\""  /f

REG ADD HKCR\.wcz   /ve  /d wczfile  /f
REG ADD HKCR\wczfile   /ve  /d "WCS 脚本文件"  /f
REG ADD HKCR\wczfile\DefaultIcon /ve   /d "%PECMD%",0  /f
REG ADD HKCR\wczfile\shell\open\command /ve   /d  "%PECMD% LOAD \"%%L\""  /f


REG ADD HKCR\inifile\shell\PECMD /ve   /d  "PECMD 运行"  /f
REG ADD HKCR\inifile\shell\PECMD\command /ve   /d  "%PECMD% LOAD \"%%L\""  /f

REG ADD HKCR\inifile\shell\PECMDEDIT /ve   /d  "PECMD 编辑"  /f
REG ADD HKCR\inifile\shell\PECMDEDIT\command /ve   /d  "%EDIT% \"%%L\""  /f

@IF  "-"=="%EDIT2%" goto SKIPEDUT2
REG ADD HKCR\inifile\shell\1PECMDEDIT /ve   /d  "PECMDEDIT 编辑"  /f
REG ADD HKCR\inifile\shell\1PECMDEDIT\command /ve   /d  "%EDIT2% \"%%L\""  /f
REG ADD HKCR\wcsfile\shell\1PECMDEDIT /ve   /d  "PECMDEDIT 编辑"  /f
REG ADD HKCR\wcsfile\shell\1PECMDEDIT\command /ve   /d  "%EDIT2% \"%%L\""  /f
:SKIPEDUT2

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PATHEXT   /d  ".COM;.EXE;.NTR;.NTE;.NTX;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.WCS;.WCE;.WCX;.WCZ"  /f

有几个地方没有加引号,到账reg命令出现命令行参数过多,而无法修改注册表的现象.
回复

使用道具 举报

4432#
 楼主| 发表于 2013-2-10 14:53:16 | 只看该作者

回复 #4700 2011hwo1 的帖子

新年好啊!
已更新。
回复

使用道具 举报

4433#
发表于 2013-2-10 18:17:45 | 只看该作者
回复 #4701 mdyblog  的帖子
mdyblog大师你也是新年好啊!
怎么获取快捷方式的指向文件名?
回复

使用道具 举报

4434#
 楼主| 发表于 2013-2-10 18:37:18 | 只看该作者
原帖由 2011hwo1 于 2013-2-10 18:17 发表
回复 #4701 mdyblog  的帖子
mdyblog大师你也是新年好啊!
怎么获取快捷方式的指向文件名?


你是说,有人建立了一个D:\A.LNK
快捷方式。
你现在想知道这个 D:\A.LNK 指向那个文件吗?
回复

使用道具 举报

4435#
发表于 2013-2-10 19:44:00 | 只看该作者
你说的没有错!!!!!!!!!!!!
回复

使用道具 举报

4436#
发表于 2013-2-10 20:51:16 | 只看该作者
#code=936 这个功能很不错
连在繁体系统上运行都不会乱码...试了一下跑PING2.WCS mess出来的字不乱码呢...

继续期待你的64位pecmd2012......

[ 本帖最后由 andos 于 2013-2-10 21:53 编辑 ]
回复

使用道具 举报

4437#
 楼主| 发表于 2013-2-11 02:17:33 | 只看该作者
原帖由 2011hwo1 于 2013-2-10 18:17 发表
回复 #4701 mdyblog  的帖子
mdyblog大师你也是新年好啊!
怎么获取快捷方式的指向文件名?


PECMD2012.1.73.1-130210.多窗口线程孵化版_win32.sfx.zip

LINK ? [**f]  快捷方式路径,[目标路径名][,运行参数名][,图标路径名[#[图标索引名]]][,备注名][,起始位置名][,快捷键名][,显示标志名]    //查询  
**f则不自动补充".LNK"。
LINK ?  %DeskTop%\HPRSNAP,&FN,&ARG,&ICON#&IICON,&COMMENT,&START,&KEY,&ISHOW
MESS [%&FN%]  [%&ARG%] [%&ICON%][%&IICON%]  [%&COMMENT%]  [%&START%] [%&KEY%] [%&ISHOW%]
// [D:\SOFT\HYPERSNAP6\HPRSNAP6.NTR]  [a  bb cc] [%SystemRoot%\system32\SHELL32.dll][13]  [XXX YYY]  [D:\SOFT\HYPERSNAP6] [632] [3]

其实,可以直接调用系统的DLL,获得 快捷方式的指向文件名。下面是C++程序,有兴趣可以试着用
脚本实现。

BOOL ReadShortCut(LPWSTR linkName, CString &FilePath)        
{        
    ::CoInitialize(NULL);        
    IShellLink *m_pIShellLink=NULL;        
    IPersistFile *m_pIPersistFile=NULL;
    HRESULT hr=::CoCreateInstance(CLSID_ShellLink,NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&m_pIShellLink);        
    if(hr==S_OK)        
    {        
        hr=m_pIShellLink->QueryInterface(IID_IPersistFile,(void **)&m_pIPersistFile);        
        if(hr==S_OK)        
        {        
            USES_CONVERSION;         
            m_pIPersistFile->Load(linkName,STGM_READ);        
            wchar_t m_strPath[1050+1]; m_strPath[0]=0;        
            //读取快捷方式的目标路径         
            m_pIShellLink->GetPath(m_strPath,1050,NULL,SLGP_UNCPRIORITY);   
            FilePath =   m_strPath; //获得文件路径
            m_pIPersistFile->Release();        
        }        
        m_pIShellLink->Release();        
    }        
    ::CoUninitialize();        
    return !!m_pIPersistFile ;        
}

评分

参与人数 1无忧币 +5 收起 理由
2011hwo1 + 5

查看全部评分

回复

使用道具 举报

4438#
 楼主| 发表于 2013-2-11 11:25:54 | 只看该作者
原帖由 mdyblog 于 2013-2-11 02:17 发表


PECMD2012.1.73.1-130210.多窗口线程孵化版_win32.sfx.zip

LINK ? [**f]  快捷方式路径,[目标路径名][,运行参数名][,图标路径名[#[图标索引名]]][,备注名][,起始位置名][,快捷键名][,显示标志名]    //查 ...


增加了个功能
1》 直接地址调用:
┃CALL $[**cd ][**rcd ][**c ][**ret:返回名 ]#,函数地址[,[#]参数1][,...[,[#]参数20┃
┃CALL $[**cd ][**rcd ][**c ]**ret:* #,函数地址, [返回名][,[#]参数1][,..[,[#]参数20┃



ENVI &&&Alias IcmpCreateFile=CALL $? **ret:*  #,0x76d34d5e,
IcmpCreateFile &&hIcmpFileAddr

调用非输出的,但知道地址的函数,尤其是C++虚函数。


2》查询函数地址
┃CALL $? **ret:返回名 DLL路径,函数名称
┃CALL $? **ret:* DLL路径,函数名称, 返回名

CALL $? **ret:*  IPHLPApi.DLL,IcmpCreateFile, &&hIcmpFileAddr

MESS  IcmpCreateFile=[%&hIcmpFileAddr%]
// IcmpCreateFile=[0x76d34d5e]
回复

使用道具 举报

4439#
 楼主| 发表于 2013-2-11 14:36:43 | 只看该作者

MemoryCopy测试.wcs

调用内置函数 MemoryCopy
MemoryCopy测试.wcs:
CALL $? **ret:*  .,MemoryCopy, &&MemoryCopyAddr
ENVI &&&Alias MemoryCopy=CALL $**c **ret:*  #,%&MemoryCopyAddr%,
//或直接 ENVI &&&Alias MemoryCopy=CALL $**c **ret:*  .,MemoryCopy,
//MESS MemoryCopyAddr[%&MemoryCopyAddr%]
ENVI &&A=123456
ENVI &&B=ABCDEF
ENVI-addr &&AAdr=&A
ENVI-addr &&BAdr=&B

MESS A[%A%]  //[%&AAdr%,%&BAdr%]
//A[123456]  
calc -base=16 &AAdr=%&AAdr%+2  //偏移1字符
MemoryCopy &&ret,#%&AAdr%,#%&BAdr%,#6  //拷贝3个字符
MESS A[%A%]
//A[1ABC56]
//A原来内容 [123456] 偷偷变成了 [1ABC56]


[ 本帖最后由 mdyblog 于 2013-2-12 11:55 编辑 ]
回复

使用道具 举报

4440#
 楼主| 发表于 2013-2-12 11:33:42 | 只看该作者

7ZIP 进度条 PECMD脚本?

想作个 7ZIP 进度条  的PECMD脚本。
谁有 7Zip.au3,请发一个上来。
我转化为PECMD PECMD脚本。

我下了个 AutoIT3 ,奇怪里面没有这个文件。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-7-5 19:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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