|
下面代码即可重现我说的那个问题
同样没有指定,磁盘和分区 ,
执行显示:提示没有分区号
执行隐藏:提示没有磁盘
如果:指定分区号,不指定磁盘号, 执行显示,没有提示了.
再执行隐藏,却提示没有分区号(已经指定了分区号)
//分区.wcs:
#!PECMD
ENVI &&&EnviMode=1 //避免意外错误,空变量,外部变量,
ENVI &FORCELOCAL=1 //可以处理大变量. 不影响外部变量
_SUB EditDisk, W728H500,PECMD分区6.0
LABE , L90T25W35H20, 磁盘
PART list disk,&&全部磁盘
ENVI &&磁盘LIST=NA
MSTR &D1=<1>%&全部磁盘%
forx * %全部磁盘%,&&磁盘, FIND $NA=%&磁盘LIST%, ENVI &磁盘LIST=%&磁盘%! ENVI &磁盘LIST=%&磁盘LIST%|%&磁盘%
LIST PHYDRV, L90T42W35H20,%&磁盘LIST%,,-%D1%
LABE , L135T25W35H20, 分区
LIST parth,L135T42W35H20,1|2|3|4|,,-1
LABE , L520T25W60H20, MBR类型
ENVI MBR=%SystemRoot%\System32\MBR.MBR
ENVI MBR_63S=*63s*%SystemRoot%\System32\MBR.MBR
LIST mbrlx,L520T42W60H20,nt6|win|nt5|dos|MBR|MBR_63S|,,nt6
ITEM , L665T45W35H40,删除盘符, CALL F6
LABE , L595T25W90H20, 分配(删除)盘符
EDIT EDISKpf, L595T42W60H20,%DISKpf%,
ITEM , L595T70W60H20,分配盘符, CALL F7
ITEM , L475T70W35H20,隐藏, CALL HIDEPART_MSG %PHYDRV% %parth%
ITEM , L430T70W35H20,显示, CALL HIDEPART_MSG %PHYDRV% %parth% 反
// ITEM , L475T70W35H20,隐藏, CALL HIDEPART %PHYDRV%#%parth%
// ITEM , L430T70W35H20,显示, CALL HIDEPART %PHYDRV%#%parth% 反
ITEM , L260T100W140H20,显示移动硬盘+分配盘符, show u:-1
ITEM , L380T400W50H30,计算器, EXEC =calc.exe
ITEM , L450T400W50H30,记事本, EXEC =notepad.exe
ITEM , L580T400W105H30,关闭 (取消), KILL \
_END
_SUB F6
FIND $=%EDISKpf%,!! TEAM MESS 没有指定盘符 @#参数错误OK *5000| EXIT _SUB
SHOW ,%EDISKpf%
MESS 完成 @#OK *5000
_END
_SUB F7
FIND $=%PHYDRV%,!! TEAM MESS 没有指定磁盘 @#参数错误OK *5000| EXIT _SUB
FIND $=%parth%,!! TEAM MESS 没有指定分区号 @#参数错误OK *5000| EXIT _SUB
FIND $=%EDISKpf%,!! TEAM MESS 没有指定盘符 @#参数错误OK *5000| EXIT _SUB
SHOW %PHYDRV%:%parth%,%EDISKpf%
MESS 完成 @#OK *5000
_END
_SUB wmbr
FIND $=%PHYDRV%,!! TEAM MESS 没有指定磁盘 @#参数错误OK *5000| EXIT _SUB
ENVI &&MBR1=%mbrlx%
FIND $MBR=%&MBR1%, ENVI &MBR1=%MBR% //转一下
FIND $MBR_63S=%&MBR1%, ENVI &MBR1=%MBR_63S% //转一下
PART /MBR=%&MBR1% %PHYDRV%
// PART /mbr=%mbrlx% %PHYDRV%
MESS 完成 @#OK *5000
_END
// 带提示HIDEPART_MSG
// 参数1 : 磁盘号 如0
// 参数2 : 分区号 如1
// 参数3 : 无或1 为隐藏,否则为反隐藏
_SUB HIDEPART_MSG
FIND $=%1,!! TEAM MESS 没有指定磁盘 @#参数错误OK *5000| EXIT _SUB
FIND $=%2,!! TEAM MESS 没有指定分区号 @#参数错误OK *5000| EXIT _SUB
CALL HIDEPART %1#%2 %3
_END
//隐藏分区的算法
// 1 0x16 0 0 137363456 0 137363456
// 参数1 : 磁盘#分区号 如0#1
// 参数2 : 无或1 为隐藏,否则为反隐藏
_SUB HIDEPART
SET &dev=%1
SET &func=%2
FIND $%2=, SET func=1
PART list part %&dev% ,&data
MSTR &type=<2>%&data% //获取 type
FIND $%&func%=1, CALC &ntype=%&type% | 0x10 //隐藏
FIND $%&func%=1,! CALC &ntype=%&type% & 0xEF //反隐藏
PART -super %&dev% %&ntype% //设置新的类型
_END
ENVI$ &NL=0d 0a
ENVI DISKpf=z
CALL EditDisk
[ 本帖最后由 dvd008 于 2012-3-10 19:05 编辑 ] |
|