今天一位狐朋狗友说他老婆玩游戏入迷了,想让她的游戏运行不了。
VBS短小精干用来干这种卑劣的事,最合适不过:(注释已经很详细了,就不多说了)
On Error Resume Next
'-----------------初始化,可以自定义的数据后都有说明,要重新启动本程序才能生效“wscript.exe”----------------------
Dim WshShell, BtnCode
Set WshShell = WScript.CreateObject("WScript.Shell") 'VBS对象
Dim listFilePath,ProcessList,CheckPeriod,sdt,ndt,wst,wnt
listFilePath = "C:\WINDOWS\list.txt" ' 这个引号里写上存放进程名称的txt文件(把你要杀的程序写在这 TXT 文件中,每行一个)
CheckPeriod = 3 '这里是检查周期,单位为秒(每隔多少秒扫描一次)
MsgCheck = 1 '如果为零不弹出消息框,否则就弹出
Msgtitles = "系统提示" '消息框标题
MsgContext = "未知错误,可能文件已损坏。" '消息框正文
MsgButtons = 48 '弹出框的界面(请参考 “Msgbox界面参数”文件)
MsgTimes = 5 '弹出窗口倒记时
'------这下面的四个是允许玩游戏的时间段--------
sdt = "10:00:00" '星期天,开始
ndt = "21:30:00" '星期天,结束
wst = "10:00:00" '平时开始
wnt = "23:20:00" '平时结束
'-----------定义杀进程SUB------------------------------------------
sub Close_Process(ProcessName)
On Error Resume Next
for each ps in getobject("winmgmts:\\.\root\cimv2:win32_process").instances_ '循环进程
if Ucase(ps.name)=Ucase(ProcessName) then
ps.terminate
'弹出消息框
if MsgCheck <> 0 then
BtnCode = WshShell.Popup(MsgContext, MsgTimes, Msgtitles, MsgButtons)
end if
end if
next
end sub
'--------------读取进程列表,存入数组-------------------
sub Get_list(FilePath)
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(FilePath , 1)
Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline
mylist = mylist & strNextLine & ","
Loop
ProcessList = Split(mylist, ",")
end sub
'-------------时间检查函数--如果要关就反回true--------------------------
Function mytime()
'如果星期天:
if Weekday(now) = 1 and Now > CDate(Date & " " & sdt) and Now < CDate(Date & " " & ndt) then
mytime = false
Exit Function
end if
'如果平时:
if Weekday(now) <> 1 and Now > CDate(Date & " " & wst) and Now < CDate(Date & " " & wnt) then
mytime = false
Exit Function
end if
'在不允许的时间段:
mytime = true
End Function
'--------------开始循环检查-------------------
Do
if mytime then
'读取列表,以检查TXT文中是否加入了新的数据
Get_list(listFilePath)
'如果列表中有写进程名称就处理:
if(Ubound(ProcessList)<>0) then
For i = 0 to Ubound(ProcessList)-1
Close_Process(ProcessList(i))
Next
end if
end if
'隔三秒再检查一次
WScript.Sleep 1000 * CheckPeriod
Loop
2011-06-19
查杀进程 v1.2
因为最近系统总会出很多conime.exe,暂时也没空重装,于是改了一下这个VBS用来杀掉它们。
1、加了个 “进程 允许的时间段” 的判断。
2、加了个 '查杀完成,是否退出?如果要实时查杀,请注释下面的这段语句
那个时间段判断的的代码应该可以优化一下,暂时不管了,动画要紧。
On Error Resume Next
'-----------------初始化,可以自定义的数据后都有说明,要重新启动本程序才能生效“wscript.exe”----------------------
Dim WshShell, BtnCode
Dim checkTime '是否在指定时间段才查杀?
Set WshShell = WScript.CreateObject("WScript.Shell") 'VBS对象
Set fso = CreateObject("Scripting.FileSystemObject")
Dim listFilePath,ProcessList,CheckPeriod,sdt,ndt,wst,wnt,Current_path
Current_path = fso.GetParentFolderName(Wscript.ScriptFullName)'获取当前路径
listFilePath = Current_path + "\list.txt" '默认进程列表在当前文件夹下。
CheckPeriod = 3 '这里是检查周期,单位为秒(每隔多少秒扫描一次)
MsgCheck = 0 '如果为零不弹出消息框,否则就弹出
Msgtitles = "系统提示" '消息框标题
MsgContext = "未知错误,可能文件已损坏。" '消息框正文
MsgButtons = 48 '弹出框的界面(请参考 “Msgbox界面参数”文件)
MsgTimes = 5 '弹出窗口倒记时
'------这下面的四个是允许玩游戏的时间段--------
checkTime = false
sdt = "10:00:00" '星期天,开始
ndt = "21:30:00" '星期天,结束
wst = "10:00:00" '平时开始
wnt = "23:20:00" '平时结束
'-----------定义杀进程SUB------------------------------------------
sub Close_Process(ProcessName)
On Error Resume Next
for each ps in getobject("winmgmts:\\.\root\cimv2:win32_process").instances_ '循环进程
if Ucase(ps.name)=Ucase(ProcessName) then
ps.terminate
'弹出消息框
if MsgCheck <> 0 then
BtnCode = WshShell.Popup(MsgContext, MsgTimes, Msgtitles, MsgButtons)
end if
end if
next
end sub
'--------------读取进程列表,存入数组-------------------
sub Get_list(FilePath)
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(FilePath , 1)
Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline
mylist = mylist & strNextLine & ","
Loop
ProcessList = Split(mylist, ",")
end sub
'-------------时间检查函数--如果要关就反回true--------------------------
Function mytime()
'如果星期天:
if Weekday(now) = 1 and Now > CDate(Date & " " & sdt) and Now < CDate(Date & " " & ndt) then
mytime = false
Exit Function
end if
'如果平时:
if Weekday(now) <> 1 and Now > CDate(Date & " " & wst) and Now < CDate(Date & " " & wnt) then
mytime = false
Exit Function
end if
'在不允许的时间段:
mytime = true
End Function
'--------------开始循环检查-------------------
Do
'用于限制进程在允许的时间段内运行
'否则,直接统统杀掉
if checkTime=True And mytime Then
'读取列表,以检查TXT文中是否加入了新的数据
Get_list(listFilePath)
'如果列表中有写进程名称就处理:
if(Ubound(ProcessList)<>0) then
For i = 0 to Ubound(ProcessList)-1
Close_Process(ProcessList(i))
Next
end if
Else
'读取列表,以检查TXT文中是否加入了新的数据
Get_list(listFilePath)
'如果列表中有写进程名称就处理:
if(Ubound(ProcessList)<>0) then
For i = 0 to Ubound(ProcessList)-1
Close_Process(ProcessList(i))
Next
end if
end if
'查杀完成,是否退出?如果要实时查杀,请注释下面的这段语句
BtnCode = WshShell.Popup("如果‘否’,1秒钟后,再查杀一遍", 10, "查杀完成,是否退出?", 4 )
If BtnCode = 6 Then
WScript.Quit
end If
'隔三秒再检查一次
WScript.Sleep 1000 * CheckPeriod
Loop