Windows 10 任务管理器(进程选项卡)未显示 VBScript(即 wscript 进程)

Windows 10 任务管理器(进程选项卡)未显示 VBScript(即 wscript 进程)

我正在研究一个 VBScript,当系统条件满足时显示一个消息框(它运行一个循环,每次迭代后都会进入休眠状态)。

问题:我注意到,当我运行脚本时,它实际上并没有显示在任务管理器中(编辑:在“进程”选项卡中),除非它之前显示过消息框(此后它会显示为“Microsoft ® Windows Based Script Host”正如我所料)。

仅供参考:我正在按名称排序搜索任务管理器,然后在“后台进程”下查看。

隐藏 VBScript 会带来一些问题,原因如下:

  • 我无法轻易终止该进程:无论是在开发过程中还是为了更改常量值
  • 我不知道该进程是否正在运行,也不知道运行了多少次。我只是对大约 20 个消息框感到惊讶,因为我在处理该脚本时已经多次运行了该脚本。
  • 它看起来总体上是不安全的,因为脚本可以在不被看到的情况下运行。

这是正常的吗?我是不是漏掉了什么?有没有办法强制 wscript 进程始终显示在任务管理器中(编辑:在“进程”选项卡中)?

编辑:@garbb 指出,您可以在“详细信息”选项卡中看到所有正在运行的 VBScript。这实际上解决了我的大部分问题。不过,我仍然很好奇:为什么“进程”选项卡在显示第一个消息框之前不列出正在运行的 VBScript?它们是独立的进程,对吧?这为恶意脚本留下了隐蔽的空间(除非用户检查“详细信息”选项卡)。

答案1

我不知道您或这里的其他成员是否可以从这个旧的 vbscript 中获得帮助来选择正在运行的 vbscript 并想要终止它。

因此我将其命名为:


Wscript_Killer_选择器

Option Explicit
Dim Title,Copyright,fso,ws,LogFile,temp,PathLogFile,OutPut,Count,strComputer
Copyright = " ["& chr(169) &" Hackoo 2014 ]"
Title = " Processes "& DblQuote("Wscript.exe") &" Running"
Set fso = CreateObject("Scripting.FileSystemObject")
Set ws = CreateObject( "Wscript.Shell" )
LogFile="Process_WScript.txt"
temp = ws.ExpandEnvironmentStrings("%temp%")
PathLogFile = temp & "\" & LogFile
Set OutPut = fso.CreateTextFile(temp & "\" & LogFile,1)
Count = 0 
strComputer = "."
Call Find("wscript.exe")
Call Explorer(PathLogFile)
'----------------------------------------------------------------------------------------------
Function Explorer(File)
    Dim ws
    Set ws = CreateObject("wscript.shell")
    ws.run "Explorer "& File & "\",1,True
end Function
'----------------------------------------------------------------------------------------------
Sub Find(MyProcess)
    Dim colItems,objItem,Process,Question
    Set colItems = GetObject("winmgmts:").ExecQuery("Select * from Win32_Process " _
    & "Where Name like '%"& MyProcess &"%' AND NOT commandline like '%" & wsh.scriptname & "%'",,48)
    For Each objItem in colItems
        Count= Count + 1
        'Extracting the path of the script from the command line
        Process = Trim(Mid(objItem.CommandLine,InStr(objItem.CommandLine,""" """) + 2))
        Process = Replace(Process,chr(34),"")
        Question = MsgBox ("Do you want to stop this script : "& DblQuote(Process) &" ?" ,VBYesNO+VbQuestion,Title+Copyright)
        If Question = VbYes then
            objItem.Terminate(0)' Kill this process
            OutPut.WriteLine DblQuote(Process)
        else
            Count= Count - 1 'decrement the counter by -1
        End if
    Next
OutPut.WriteLine String(100,"-")
OutPut.WriteLine count & Title & " have been killed !"
End Sub
'----------------------------------------------------------------------------------------------
Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
End Function
'----------------------------------------------------------------------------------------------

相关内容