IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Comment Tuer un processus bien déterminé crée par wscript.exe connaissant son nom du fichier VBS ?


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut Comment Tuer un processus bien déterminé crée par wscript.exe connaissant son nom du fichier VBS ?
    chers membres
    J'ai consulté la pour savoir Comment "tuer" un processus en mémoire ?
    Donc mon Objectif est Comment Tuer un processus bien déterminé crée par wscript.exe connaissant son nom du fichier VBS ?
    Par exemple si j'ai lancé un script nommé fichier1.vbs qui est en cours d'execution en boucle par exemple et je veux faire un autre script nommé fichier2.vbs qui va terminer le processus crée par le fichier1.vbs.
    est-ce-que c'est possible ou non ??

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    salut,
    un point de départ, je te laisse terminer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    Set colProcessList = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = 'wscript.exe'")
     
    For Each objProcess in colProcessList
        msgbox Mid(objProcess.CommandLine,InStr(objProcess.CommandLine,""" """) + 2)
    Next
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Si tu connais le PID (processus ID) et/ou le PPID (Parent Processus ID) du process à killer, tu peux filtrer par rapport à ces deux paramètres à la place de Name dans l'exemple proposé par omen999.

    Si tu lances un processus via le fichier VBS tu peux obtenir le PID comme ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
    ' Obtain the definition of the class.
    Set objShare = objWMIService.Get("Win32_Process")
     
    ' Obtain an InParameters object specific
    ' to the method.
    Set objInParam = objShare.Methods_("Create"). _
        inParameters.SpawnInstance_()
     
     
    ' Add the input parameters.
     
    ' Execute the method and obtain the return status.
    ' The OutParameters object in objOutParams
    ' is created by the provider.
    Set objOutParams = objWMIService.ExecMethod("Win32_Process", "Create", objInParam)
     
    ' List OutParams
    Wscript.Echo "Out Parameters: "
    Wscript.echo "ProcessId: " & objOutParams.ProcessId
    Wscript.echo "ReturnValue: " & objOutParams.ReturnValue
    Je te laisse imaginer quoi faire avec cela.

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    Si tu lances un processus via le fichier VBS tu peux obtenir le PID comme ci-dessous :
    tu peux faire la même chose plus simplement sans passer par wmi
    http://www.developpez.net/forums/d10...pt-controlant/(message n°5)
    ProcessId ne figure pas dans le fichier doc...
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim Erreur, PID, Adresse_IP
    Dim path_executable  'le chemin de ton exe
    Dim executable 'l'exe
    Adresse_IP = "." 'l'adresse IP d'un PC local ou distant.
    path_executable = "C:\Windows\System32\"
    executable = "notepad.exe"
    Set objWMIService = GetObject("winmgmts:\\" & Adresse_IP & "\root\cimv2:Win32_Process")
    Erreur = objWMIService.Create(executable, path_executable, null, PID)
    Set objWMIService = Nothing
     
    Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMIService = objSWbemLocator.ConnectServer(Adresse_IP, "root\CIMV2")
    Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE ProcessID = '" & PID & "'")
    If colProcessList.count = 0 Then
       'L'exe n'est pas présent, alors tu peux le lancer.
       msgbox("Notepad n'est pas en cours d'exécution")
    else
       msgbox("Notepad est en cours d'exécution")
    End If
    Un peu mieux que mon précédent script et cela marche.

  6. #6
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    à Tous !
    Bon pour vos réponses mais j'ai pas trouvé encore de solution optimale jusqu'à maintenant pour tuer un processus bien ciblé qui est générer par le wscript.exe connaissant son nom de fichier mais je vais le mettre comme
    et voila peut-être ça peut servir a d'autres membres par exemple pour détecter et analyser les programmes malveillants (Malwares) crée par le wscript.exe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set sho = CreateObject( "Wscript.Shell" )
    NomFichierLog="Processus VBScript.txt"
    temp = sho.ExpandEnvironmentStrings("%temp%")
    PathNomFichierLog = temp & "\" & NomFichierLog
    Set OutPut = fso.CreateTextFile(temp & "\" & NomFichierLog,1)
    count=0 
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    Set colProcessList = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = 'wscript.exe'")
     
    For Each objProcess in colProcessList
        count= count + 1
        msgbox Mid(objProcess.CommandLine,InStr(objProcess.CommandLine,""" """) + 2),64," Processus VBScript en cours d'exécution "
        OutPut.WriteLine Mid(objProcess.CommandLine,InStr(objProcess.CommandLine,""" """) + 2)
    	OutPut.WriteLine
    Next
    OutPut.WriteLine
    OutPut.WriteLine count & " Processus VBScript en cours d'exécution"
    Explorer(PathNomFichierLog)
     
    Function Explorer(File)
        Set ws=CreateObject("wscript.shell")
        ws.run "Explorer "& File & "\"
    end Function

  7. #7
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut Le problème est bien résolu et pour de bon cette fois-ci !

    Maintenant le problème est bien et pour de bon cette fois-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set sho = CreateObject( "Wscript.Shell" )
    NomFichierLog="Processus VBScript.txt"
    temp = sho.ExpandEnvironmentStrings("%temp%")
    PathNomFichierLog = temp & "\" & NomFichierLog
    Set OutPut = fso.CreateTextFile(temp & "\" & NomFichierLog,1)
    count=0 
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    Set colProcessList = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = 'wscript.exe'")
     
    For Each objProcess in colProcessList
        count= count + 1
        msgbox Mid(objProcess.CommandLine,InStr(objProcess.CommandLine,""" """) + 2),64," Processus VBScript en cours d'exécution "
        OutPut.WriteLine Mid(objProcess.CommandLine,InStr(objProcess.CommandLine,""" """) + 2)
    	OutPut.WriteLine
    Next
    OutPut.WriteLine
    OutPut.WriteLine count & " Processus VBScript en cours d'exécution"
    Explorer(PathNomFichierLog)
     
    Function Explorer(File)
        Set ws=CreateObject("wscript.shell")
        ws.run "Explorer "& File & "\"
    end Function
    ' FindScript.vbs
    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
        Wscript.Echo "Terminating script with this CommandLine: " & objItem.CommandLine
        objItem.Terminate(1)
    Next

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment tuer un processus à partir de C++
    Par bouzaidi dans le forum Windows
    Réponses: 5
    Dernier message: 07/09/2009, 14h04
  2. Comment tuer le processus de son application
    Par superjaja dans le forum Visual C++
    Réponses: 4
    Dernier message: 20/03/2007, 16h30
  3. Comment tuer les processus dans l'état sleeping sans EM ?
    Par David Guillouet dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 04/02/2005, 09h42
  4. Comment tuer le processus ez-ipupdate
    Par berry dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 21/06/2004, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo