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 peut-on tuer toutes les instances de "Wscript.exe" sauf une qui est lancée par mon script VBS ?


Sujet :

VBScript

  1. #1
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut Comment peut-on tuer toutes les instances de "Wscript.exe" sauf une qui est lancée par mon script VBS ?

    Ma Question : Comment peut-on tuer toutes les instances de "Wscript.exe" sauf une qui est lancée par mon script VBS ?
    J'ai commencé à faire un petit script, mais je suis bloqué au niveau de la ligne 19 Erreur de syntaxe
    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
    Set oWMISrvc = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\.\root\cimv2")
     
    sProcName = Mid(wsh.fullname, InstrRev(wsh.fullname, "\") + 1)
     
    Set cProcesses = oWMISrvc.ExecQuery( _
    "select * from win32_process where Name = '" & sProcName & "'")
     
    For Each oProcess in cProcesses
        If Instr(lcase(oProcess.Commandline), lcase(wsh.scriptname)) < 0 Then
            wsh.echo oProcess.Commandline
            wsh.echo wsh.scriptname
        else
            Process2kill = Mid(oProcess.CommandLine,InStr(oProcess.CommandLine,""" """) + 2)
            Process2kill = Replace(Process2kill,chr(34),"")
            msgbox Process2kill 
            Set colItems = GetObject("winmgmts:").ExecQuery("Select * from Win32_Process " _
            & "where commandline like '" & Process2kill &"'",,48)
            For Each objItem in colItems 
                Wscript.Echo "Terminating script with this CommandLine: " & objItem.CommandLine
                objItem.Terminate()
            Next
        End If
    Next
    msgbox "ok"

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Salut

    Peut être cela pourra t'aider, (Reprise dans la FAQ Comment lister les processus actifs ?)
    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
    Dim svc, sQuery, oproc
    Dim ProgHote, MeProg
     
        'Hote =  WScript.exe, CScript.exe
        ProgHote =  Mid(WScript.FullName, InstrRev(WScript.FullName, "\") + 1)
        MeProg = WScript.ScriptFullName
        Wscript.Echo "****************************************************************************" & vbnewline _
                    & "ProgHote: " & ProgHote & vbnewline _
                    & "MeProg: " & MeProg & vbnewline _
                    & "****************************************************************************" & vbnewline
        Set svc = GetObject("winmgmts:root\cimv2")
        sQuery = "select * from win32_process where Name = '" & ProgHote & "'"
        For Each oproc In svc.execquery(sQuery)
            If InStr(1, oproc.Properties_("commandLine"), MeProg, vbBinaryCompare) <> 0 Then
                'je conserve
                Wscript.Echo "A conserver: " & oproc.Properties_("commandLine") & vbnewline
                Else
                'supprimer le processus
                Wscript.Echo "Suppression de " & oproc.Properties_("commandLine") & vbnewline
                'oproc.Terminate()
            End If
        Next
        Set svc = Nothing
        MsgBox "Fin"
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut
    et pour l'aide
    Bon j'ai trouvé une solution très simple dans un forum anglais, je vous la partage et le problème est ainsi comme ceci :
    avec une simple boucle et un filtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set wmi = GetObject("winmgmts:root\cimv2")
    Set cProcesses = wmi.ExecQuery("select * from win32_process where Name like '%wscript.exe%' AND NOT commandline like '%" & wsh.scriptname & "%'")
     
    For Each oProcess in cProcesses
        wsh.echo oprocess.commandline
        oProcess.Terminate()
    Next

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/04/2012, 15h29
  2. Réponses: 3
    Dernier message: 22/05/2006, 17h00
  3. Connaitre toutes les instances d'une classe
    Par miniseb dans le forum Langage
    Réponses: 14
    Dernier message: 09/01/2006, 17h35
  4. Réponses: 11
    Dernier message: 14/12/2005, 13h45
  5. Réponses: 2
    Dernier message: 09/07/2003, 14h10

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