简单vbs进程查询 我是VBS新手,但在C、C++、Navajava中编程。我试着在网上搜索,但我仍然找不到我错在哪里。我正在编写一个脚本,如果一个名为rundll的进程的cpu使用率超过20%,那么它将被杀死 Option Explicit DIM MyPID(5), objProcess, objItems, objitem DIM XX, I XX = -1 dim objService set objService = getobject("winmgmts:") dim Process for each Process in objService.InstancesOf("Win32_process") if Process.Name = "rundll32.exe" Then XX = XX + 1 if Process.Name = "rundll32.exe" Then MyPID(XX) = Process.processid Next For I = 0 To 5 Set objProcess = GetObject("winmgmts:{impersonationLevel=impersonate}//localhost") Set objItems = objProcess.ExecQuery("Select PercentProcessorTime from Win32_PerfFormattedData_PerfProc_Process where IDProcess=" &MyPID(I)& "") if (IsNull(objItems)) Then Wscript.Echo "No process found" Exit For End if for each objItem in objItems if objItems = Null Then Wscript.Echo "No process found" elseif objItem>20 Then Wscript.Echo "Criminal process found :" & MyPID(I) & " = " & objItem.PercentProcessorTime End if NEXT NEXT

简单vbs进程查询 我是VBS新手,但在C、C++、Navajava中编程。我试着在网上搜索,但我仍然找不到我错在哪里。我正在编写一个脚本,如果一个名为rundll的进程的cpu使用率超过20%,那么它将被杀死 Option Explicit DIM MyPID(5), objProcess, objItems, objitem DIM XX, I XX = -1 dim objService set objService = getobject("winmgmts:") dim Process for each Process in objService.InstancesOf("Win32_process") if Process.Name = "rundll32.exe" Then XX = XX + 1 if Process.Name = "rundll32.exe" Then MyPID(XX) = Process.processid Next For I = 0 To 5 Set objProcess = GetObject("winmgmts:{impersonationLevel=impersonate}//localhost") Set objItems = objProcess.ExecQuery("Select PercentProcessorTime from Win32_PerfFormattedData_PerfProc_Process where IDProcess=" &MyPID(I)& "") if (IsNull(objItems)) Then Wscript.Echo "No process found" Exit For End if for each objItem in objItems if objItems = Null Then Wscript.Echo "No process found" elseif objItem>20 Then Wscript.Echo "Criminal process found :" & MyPID(I) & " = " & objItem.PercentProcessorTime End if NEXT NEXT,process,vbscript,kill-process,Process,Vbscript,Kill Process,如果脚本没有找到进程,它应该打印“未找到进程”,而不是我现在收到的复杂的空警报 如果您有任何帮助,我们将不胜感激,因此建议您不要为特定的PID枚举PercentProcessorTime,请尝试枚举超过阈值的进程,如果它们的名称符合以下条件,请终止它们: Set wmi = GetObject("winmgmts://./root/cimv2") perfQuery = "SELECT * FROM Win32_PerfFormattedData_PerfProc_Process " &

如果脚本没有找到进程,它应该打印“未找到进程”,而不是我现在收到的复杂的空警报


如果您有任何帮助,我们将不胜感激,因此建议您不要为特定的PID枚举
PercentProcessorTime
,请尝试枚举超过阈值的进程,如果它们的名称符合以下条件,请终止它们:

Set wmi = GetObject("winmgmts://./root/cimv2")

perfQuery = "SELECT * FROM Win32_PerfFormattedData_PerfProc_Process " & _
            "WHERE PercentProcessorTime >= 20"
For Each p In wmi.ExecQuery(perfQuery)
  pidQuery = "SELECT * FROM Win32_Process WHERE ProcessId = " & p.IDProcess
  For Each p1 In wmi.ExecQuery(pidQuery)
    If p1.Name = "rundll32.exe" Then p1.Terminate
  Next
Next