Как завершить определенный процесс (.hta) с помощью Taskkill DOS или аналогичного?

Много раз у меня будет несколько запущенных файлов .hta, но я хочу завершить работу только с одним из них. В диспетчере задач все они называются mshta.exe *32 на вкладке Процессы, но если я перейду на вкладку Приложения, я смогу определите конкретные .htas, которые необходимо завершить, увидев их уникальные заголовки. Например, на изображении ниже вы видите, что файл .hta называется «Меню обзора». Но на следующем изображении вы видите, что он скрыт среди других запущенных файлов .htas с именем mshta.exe *32 на вкладке Процессы.

Есть ли команда, похожая на TASKKILL /F /IM mshta.exe, которую я могу использовать, чтобы указать только закрытие экземпляров «Меню просмотра»? Заранее спасибо.

Вкладка "Приложения":

один

Вкладка "Процессы":

два


person Mathomatic    schedule 09.08.2015    source источник
comment
См. этот пост, он содержит грубый пример использования WMI, чтобы завершить процесс.   -  person Teemu    schedule 10.08.2015
comment
Вы имели в виду, что вам нужен селектор-убийца?   -  person Hackoo    schedule 16.08.2015


Ответы (2)


Вы можете сделать это в командной строке dos:

taskkill /F /IM mshta.exe /fi "WINDOWTITLE eq Review Menu"
person TSnake41    schedule 16.08.2015

Вы можете попробовать этот vbscript: KillerSelector.vbs

Option Explicit
Dim Titre,Copyright,fso,ws,NomFichierLog,temp,PathNomFichierLog,OutPut,Count,strComputer
Copyright = "[(c) Hackoo (c) 2014 ]"
Set fso = CreateObject("Scripting.FileSystemObject")
Set ws = CreateObject( "Wscript.Shell" )
NomFichierLog="Process WScript.txt"
temp = ws.ExpandEnvironmentStrings("%temp%")
PathNomFichierLog = temp & "\" & NomFichierLog
Set OutPut = fso.CreateTextFile(temp & "\" & NomFichierLog,1)
Count = 0 
strComputer = "."
'Call Find("wscript.exe")
Call Find("mshta.exe")
Call Explorer(PathNomFichierLog)
'***************************************************************************************************
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
    Titre = " Process "& DblQuote(MyProcess) &" running "
    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
        Process = Mid(objItem.CommandLine,InStr(objItem.CommandLine,""" """) + 2) 'Extraction du chemin du script en ligne de commande
        Process = Replace(Process,chr(34),"")
        Question = MsgBox ("Do you want to stop this application : "& DblQuote(Process) &" ?" ,VBYesNO+VbQuestion,Titre+Copyright)
        If Question = VbYes then
            objItem.Terminate(0)'Kill this Process
            OutPut.WriteLine DblQuote(Process)
        else
            Count= Count - 1 'décrementer le compteur de -1
        End if
    Next
OutPut.WriteLine String(100,"*")
OutPut.WriteLine count & Titre & "were stopped !"
End Sub
'**********************************************************************************************
Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
End Function
'**********************************************************************************************
person Hackoo    schedule 16.08.2015