这是工作中写的第二个WMI脚本。事情的起因是:有台终端服务器放开了INTERNET访问权限,有些人就在上面安装了阿里旺旺之类的程序,我们的人刚卸掉,他们就又给装上了。为了让此类程序用不了,于是就写了这个脚本。用法是:将要杀的进程名写到C:\processes.txt中,一行一个,域管理员运行一下就可以定期杀掉同一个域内strComputer指定机器上的指定进程;C:\log.txt可以看到是谁在运行这些程序,如果发现某个人总是在尝试运行这些程序,那肯定就是他安装的了,抓起来,打!脚本不放在本机执行,是为了防止那些安装阿里旺旺的人,把这个脚本给杀掉。
'==========================================================================
'
' NAME: KillProcesses.vbs
'
' DATE : 2007-9-11
'
' COMMENT: 每隔指定时间运行一次,杀死指定机器上的指定进程。
'
'==========================================================================
On Error Resume Next
strComputer = "."
LimitedProcesses = "C:\processes.txt"
LogFile = "C:\log.txt"
SleepTime = 10000 '单位:毫秒
Const ForReading = 1
Const ForAppending = 8
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Do
Set objTextFile = objFSO.OpenTextFile(LimitedProcesses, ForReading)
Set objLogFile = objFSO.OpenTextFile(LogFile, ForAppending, True)
Do While objTextFile.AtEndOfStream <> True
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process WHERE Name='" &objTextFile.Readline &"'")
For Each objProcess in colProcessList
colProperties = objProcess.GetOwner(strNameOfUser,strUserDomain)
s = s & "Process " & objProcess.Name & " is owned by " _
& strUserDomain & "\" & strNameOfUser & "." & VbCrLf
objProcess.Terminate()
Next
Loop
If s <> "" Then
objLogFile.WriteLine now() & VbCrLf &s
End If
objLogFile.Close
s = ""
WScript.Sleep SleepTime
Loop
========================================================================
任何形式的转载,请写明出处:
email: beginner@yeah.net
blog: http://blog.chinaunix.net/index.php?blogId=739 http://www.cublog.cn/u/739/
========================================================================