Nouvelle version plus sélective avec question !
:salut:
Voici une nouvelle version plus sélective avec question et commentée ligne par ligne :king:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| Set fso = CreateObject("Scripting.FileSystemObject")'création de l'objet fso
Set ws = CreateObject("Wscript.Shell")'création de l'objet ws (objet shell)
NomFichierLog="Processus VBScript.txt" 'Nom du fichier Log
temp = ws.ExpandEnvironmentStrings("%temp%") 'Le chemin du dossier temporaire
PathNomFichierLog = temp & "\" & NomFichierLog'Le chemin du dossier temporaire avec le fichier Log
Set OutPut = fso.CreateTextFile(temp & "\" & NomFichierLog,1)'création du LogFile qui contient le résultat final
count=0 ' initialisation du compteur
strComputer = "." 'Notre ordinateur local
Call FindScript()'Appel de la fonction FindScript()
Call Explorer(PathNomFichierLog)'Appel de la fonction Explorer(PathNomFichierLog)
'***************************************************************************************************
Function Explorer(File)
Set ws=CreateObject("wscript.shell")'création de l'objet ws (objet shell)
ws.run "Explorer "& File & "\",1,True 'Ouvrir le fichier Log
end Function
'***************************************************************************************************
Sub FindScript()
Titre = " Processus "& qq("wscript.exe")' Le Titre
'Trouver toutes les instances du processus "wscript.exe" sauf le mien
Set colItems = GetObject("winmgmts:").ExecQuery("Select * from Win32_Process " _
& "Where Name like '%wscript.exe%' AND NOT commandline like '%" & wsh.scriptname & "%'",,48)
For Each objItem in colItems
count= count + 1 ' incrémenter le compteur
Processus = Mid(objItem.CommandLine,InStr(objItem.CommandLine,""" """) + 2) 'Extraction du chemin du script en ligne de commande
'et l'afficher dans un MsgBox
Question = MsgBox ("Voulez-vous stopper ce script : "& Processus &" ?" ,VBYesNO+VbQuestion,Titre)
If Question = VbYes then
OutPut.WriteLine Processus 'Ecrire le même résultat dans le fichier Log
objItem.Terminate(0)'Tuer ce processus
else
count= count - 1 'décrementer le compteur de -1
End if
Next
OutPut.WriteLine String(50,"*") 'écrire une étoile "*" 50 fois
OutPut.WriteLine count & Titre & " ont été arrêtés !"'Ecrire le compteur du script dans le fichier Log
OutPut.WriteLine String(50,"*") 'écrire une étoile "*" 50 fois
End Sub
'***************************************************************************************************
'Fonction pour ajouter les doubles quotes dans une variable
Function qq(strIn)
qq = Chr(34) & strIn & Chr(34)
End Function
'*************************************************************************************************** |