Board logo

标题: 麻烦大家帮忙解释一下这个VBS [打印本页]

作者: zhitingkey     时间: 2008-12-24 12:32    标题: 麻烦大家帮忙解释一下这个VBS

' Clears WFP message

const win="Windows File Protection"
set arg=wscript.arguments
if arg.count then
flg=arg.item(0)
else wscript.echo "Bad parameters."
  wscript.quit
end if
set w=wscript.createobject("wscript.shell")
set f=wscript.createobject("scripting.filesystemobject")
x=999
while x > 0
w.appactivate(win)
if w.appactivate(win) then
  w.sendkeys "{ESC}"
  w.sendkeys "%y"
end if
if f.fileexists(flg) then
  x=45
  f.deletefile(flg)
end if
wscript.sleep 333
x=x-1
wend
麻烦大家帮忙解释一下这段VBS写的是什么用的`
作者: exzzz     时间: 2008-12-24 17:16
好像是系统文件被替换后,会出现一个标题为“Windows File Protection”的对话框,提示你系统文件被替换,是否要恢复?


程序运行后的333秒内,如果这个提示出现,就取消这个对话框,

如果产生了个什么文件还是对话框,这个我不懂,就删除这个文件或关掉这个对话框。接下来的15秒内只要这个提示窗口出现,这个vbs就每秒运行3次按ESC取消对话框并确认取消。15秒过后程序结束。

如果不产生这个文件或对话框什么的,过333秒后程序结束。

[ Last edited by exzzz on 2008-12-24 at 17:21 ]
作者: HAT     时间: 2008-12-24 18:22
Q: 为方便他人复制,如何给代码加code标签?
A: http://www.cn-dos.net/forum/viewthread.php?tid=43735#pid304733
参考:http://www.cn-dos.net/forum/faq.php?page=misc#1

作者: slore     时间: 2008-12-24 19:57
333是毫秒...


就是循环检测,有没有那个文件保护的提示框,有就发送按键,就是点取消.
作者: exzzz     时间: 2008-12-24 20:15
X=999
.....

wscript.sleep(333) 休眠0.3秒X-1,就是每秒X减3,999/3=333秒
作者: everest79     时间: 2008-12-25 19:14
const win="Windows File Protection" '定义常数win 是需要操作窗口的标题
set arg=wscript.arguments       '引用arguments对像给arg
if arg.count then                      '判断参数是否存在
flg=arg.item(0)                               '存在将第一个参数赋值给flg
else wscript.echo "Bad parameters."     '不存在出现提示消息参数错误
  wscript.quit              '并且退出脚本
end if                           '判断结束
set w=wscript.createobject("wscript.shell")          '创建wsh对象
set f=wscript.createobject("scripting.filesystemobject")        '创建fso对象
x=999          '赋值x为999
while x > 0        '定义x大于零时一直循环
w.appactivate(win)      '激活窗体也就是前边定义的           
if w.appactivate(win) then  '多此一举为了判断又激活了一次
  w.sendkeys "{ESC}"         '若窗体存在则先选择取消
  w.sendkeys "%y"               '然后确定
end if                              '判断结束
if f.fileexists(flg) then      '  判断做为参数传递的文件是否存在
  x=45                          '存在则设x=45
  f.deletefile(flg)             '并且删除这个文件
end if
wscript.sleep 333             '等待三分之一秒
x=x-1                             '将x减去1,
wend




欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) Powered by Discuz! 2.5