2015-06-04 25 views
5

Chcę zabić proces z VBS, wiem, że polecenie jest:Uzyskaj ścieżkę proces z VBS

oShell.Run "taskkill /im software.exe", , True 

jak dostać software.exe drogę zanim go zabić?

Ponieważ chcę ponownie uruchomić program software.exe.

Odpowiedz

4

WMI (może teminate również):

dim wmi, list, process, path, shell 

set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 
set list = wmi.ExecQuery("Select * from Win32_Process") 
        '// or "Select * from Win32_Process where name = 'xxxxxxx.exe'" allowing the removal of the if block 

for each process in list 
    if (lcase(process.name) = "xxxxxxx.exe") then 
     path = process.ExecutablePath 
     process.terminate() 
     exit for 
    end if 
next 

wscript.echo path 

set shell = CreateObject("WScript.Shell") 
shell.Run path 
+0

ok thanks to działa, po prostu dodać : Set oShell = WScript.CreateObject ("WScript.Shell") – Matt

1

Daj spróbować tego VBScript:

Option Explicit 
Dim Titre,Copyright,fso,ws,NomFichierLog,temp,PathNomFichierLog,OutPut,Count,strComputer 
If AppPrevInstance() Then 
    MsgBox "Il y a une instance déjà en cours" & VbCrLF & CommandLineLike(WScript.ScriptName),VbExclamation,"Il y a une instance déjà en cours"  
    WScript.Quit 
Else 
Copyright = "[© Hackoo © 2015 ]" 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set ws = CreateObject("Wscript.Shell") 
NomFichierLog="Killed Process.txt" 
temp = ws.ExpandEnvironmentStrings("%temp%") 
PathNomFichierLog = temp & "\" & NomFichierLog 
Set OutPut = fso.CreateTextFile(temp & "\" & NomFichierLog,1) 
strComputer = "." 
    Call Find("wscript.exe") 
    Call Explorer(PathNomFichierLog) 
End If 
'*************************************************************************************************** 
Function Explorer(File) 
    Dim ws 
    Set ws = CreateObject("wscript.shell") 
    ws.run "Explorer "& File & "\",1,True 
end Function 
'*************************************************************************************************** 
Sub Find(MyProcess) 
    Dim colItems,objItem,Processus,Question 
    Titre = " Processus "& DblQuote(MyProcess) &" en cours d'exécution " 
    Set colItems = GetObject("winmgmts:").ExecQuery("Select * from Win32_Process " _ 
    & "Where Name like '%"& MyProcess &"%' AND NOT commandline like " & CommandLineLike(WScript.ScriptFullName) & "",,48) 
    Count = 0 
    For Each objItem in colItems 
     Count= Count + 1 
     'Processus = Mid(objItem.CommandLine,InStr(objItem.CommandLine,""" """) + 2) 'Extraction du chemin du script en ligne de commande 
     Processus = objItem.CommandLine 'Replace(Processus,chr(34),"") 
     Question = MsgBox ("Voulez-vous arrêter ce script : " & DblQuote(Processus) & " ?" ,VBYesNO+VbQuestion,Titre+Copyright) 
     If Question = VbYes then 
      objItem.Terminate(0)'Tuer ce processus 
      OutPut.WriteLine Processus 
     else 
      Count= Count - 1 'décrementer le compteur de -1 
     End if 
    Next 
OutPut.WriteLine String(100,"*") 
OutPut.WriteLine count & Titre & "ont été arrêtés" 
OutPut.WriteLine String(100,"*") & VbCrLF 
End Sub 
'************************************************************************** 
Function DblQuote(Str) 
    DblQuote = Chr(34) & Str & Chr(34) 
End Function 
'************************************************************************** 
Function AppPrevInstance() 
    With GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") 
     With .ExecQuery("SELECT * FROM Win32_Process WHERE CommandLine LIKE " & CommandLineLike(WScript.ScriptFullName) & _ 
      " AND CommandLine LIKE '%WScript%' OR CommandLine LIKE '%cscript%'") 
      AppPrevInstance = (.Count > 1) 
     End With 
    End With 
End Function 
'************************************************************************** 
Sub Pause(Minutes)  
    Wscript.Sleep(Minutes*1000*60)  
End Sub 
'************************************************************************** 
Function StripProcPath(ProcessPath) 
    Dim arrStr : arrStr = Split(ProcessPath, "\") 
    StripProcPath = arrStr(UBound(arrStr)) 
End Function 
'************************************************************************** 
Function CommandLineLike(ProcessPath) 
    ProcessPath = Replace(ProcessPath, "\", "\\") 
    CommandLineLike = "'%" & ProcessPath & "%'" 
End Function 
'************************************************************************** 

albo to:

Option Explicit 
Dim Ws,fso,LogFile,Command,Execution 
Set Ws = CreateObject("Wscript.Shell") 
Set fso = CreateObject("Scripting.FileSystemObject") 
LogFile = Left(Wscript.ScriptFullName,InstrRev(Wscript.ScriptFullName, ".")) & "log" 
Call Kill("calc.exe") 
ws.run LogFile 
'**************************************************************************************************** 
Sub Kill(Process) 
     Command = "Taskkill /F /IM "&Process&" > LogTmp.txt & Cmd /U /C Type LogTmp.txt > "&LogFile&" & Del LogTmp.txt" 
     Call Executer(Command,0) 
End Sub 
'**************************************************************************************************** 
Function Executer(StrCmd,Console) 
    Dim ws,MyCmd,Resultat 
    Set ws = CreateObject("wscript.Shell") 
'La valeur 0 pour cacher la console MS-DOS 
    If Console = 0 Then 
     MyCmd = "CMD /C " & StrCmd & "" 
     Resultat = ws.run(MyCmd,Console,True) 
     If Resultat = 0 Then 
     Else 
      MsgBox "Une erreur inconnue est survenue !",16,"Une erreur inconnue est survenue !" 
     End If 
    End If 
'La valeur 1 pour montrer la console MS-DOS 
    If Console = 1 Then 
     MyCmd = "CMD /K " & StrCmd & "" 
     Resultat = ws.run(MyCmd,Console,False) 
     If Resultat = 0 Then 
     Else 
      MsgBox "Une erreur inconnue est survenue !",16,"Une erreur inconnue est survenue !" 
     End If 
    End If 
    Executer = Resultat 
End Function 
'**************************************************************************************************** 
Function DblQuote(Str) 
    DblQuote = Chr(34) & Str & Chr(34) 
End Function 
'****************************************************************************************************