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 :

VBS: Fermer un processus à l'aide du ID session


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut VBS: Fermer un processus à l'aide du ID session
    Bonjour à tous, j'ai un petit problème avec un de mes scripts en vbs. Pour vous mettre un peu dans le contexte, nous avons ici plusieurs serveurs terminaux ou plusieurs usagers utilisent le même username pour ouvrir une session. Il arrive parfois qu'il y ait un problème avec une applications, donc il nous appelle et nous pouvons facilement, à distance fermer son bon processus à l'aide de son ID de session ou son PID. Pour l'instant tout va bien. Par contre, nous aimerions éviter que les gens nous appelent pour ce genre de problème, donc je travaille sur un script qu'il serait sur leur bureau, il clic sur le script et il va pouvoir fermer son applications, disons notepad automatiquement. Le problème ici c'est que si je fais un taskkill du process à l'aide du nom d'usager, il va fermer le notepad de tous les utilisateurs connectés ayant le même nom d'utilisateur. Donc, voici la raison pourquoi il nous ait nécessaire d'avoir l'information d'ID de session dans notre script. Bon.. j'espère avoir bien expliqué.

    Niveau script, voilà ou j'en suis avec l'aide de forum sur le web. (Je ne suis pas en expert en script et loin de là!)

    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
    Dim computer
    Set WshShell = WScript.CreateObject("WScript.Shell")
    computer = "."
    Dim process  
    process = "notepad.exe"
    sessionname = WshShell.expandEnvironmentStrings("%SESSIONNAME%")
     
    'WScript.Echo sessionname
     
    Set service = GetObject("winmgmts:\\" & computer & "\root\cimv2")
    'Set results = service.ExecQuery(" Select * from Win32_Process where Name ='" & process & "' and SessionId = '" & sessionname & "'  ")
    'Set results = service.ExecQuery(" Select * from Win32_Process where Name ='" & process & "'")
    Set results = service.ExecQuery(" Select * from Win32_Process where processId = "'& sessionname &'" and Name ='" & process & "'")
    for each obj in results
    '      Wscript.echo obj.Name
    '      Wscript.echo obj.SessionId
          Wscript.echo obj.ProcessID
    next
    Bon ici c'est simplement quelques tests. L'idée c'est que j'aimerais bien avoir une variable pour avoir le ID de la session ou quelque chose du genre qui irait chercher le PID de l'application notepad pour la session de l'utilisateur courant et non les PID de tous les notepads des usagers utilisant le même nom session. Je sais pas si j'ai bien expliqué mon problème :X. Dans tous les cas merci à tout le monde qui ont prit le temps de lire ce message. Passez une bonne fin de journée

  2. #2
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut
    Rebonjour, personne a une idée par hasard? Ou peut peut-être une autre solution. Ce script serait utilisé pour fermer une application d'un ID spécifique, car nous avons plusieurs usagers qui se connectent à notre réseau en utilisant le même login name.
    Et si je vais dans le gestionnaire de tâches pour fermer manuellement le processus, l'application va fermer pour tous le monder utilisant le même login name, nous on aimerais éviter ça en fermant l'application pour seulement l'usager qui exécutera le script.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut
    Personne a une solution ça ne doit pas être sorcier.

  4. #4
    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
    Citation Envoyé par mosiko6 Voir le message
    Personne a une solution ça ne doit pas être sorcier.
    Salut, J'ai partager un script Intéressant de M Jean-Claude BELLAMY dans ce sens la essais le et dis-moi le résultat.

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut
    Merci beaucoup pour ta réponse hackoofr. Vraiment intéressant, par contre il ne permet pas de faire ce que nous avons de besoin.

    Ce qui est le plus important avant tout c'est le fait que ce script sera utilisé en succursale par des gens qui ne connaissent pas trop l'informatique (Le script sera utilisé dans une session terminal server aussi). Si l'usager voit tout les processus, il risque de fermer le mauvais ce qui pourrait être problématique. Donc idéalement il faudra "hard codé" le process que nous voulons tuer dans le script, mais c'est après que ça se gâte.

    Aussi, ça ne doit pas être les process sur la machine locale qui devra être fermé, mais un processus appartenant au ID d'une session.

    Par exemple, une succursale vont se connecter au terminal server avec le même nom d'usager pour tous les employés. Donc, s'il y a 5 usagers avec le même d'usager nom sur un serveur et que tu tues le processus de la machine correspondant à ton usager, tu vas fermer tout le monde. C'est pour cette raison qu'on bloque ici à trouver une solution pour notre script.

    Pour contourner la solution.. nous nous demandions s'il était possible d'ouvrir notre application à l'aide d'un script qui garderait un ID en index par exemple, et grâce à cela fermer le process à l'aide du ID que le script utilisé pour ouvrir l'application..

    Je sais pas si cela va vous donner plus de piste pour une éventuelle solution. Pour l'instant, je vais continuer mes recherches.

    Merci beaucoup l'aide tout le monde.

  6. #6
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 2
    Par défaut
    J'ai trouvé une astuce avec l'utilitaire query session

    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
     
    dim id,trouve,appli
    Dim WshShell, oExec
     
    appli="CEGIApplication.exe"
    trouve=false
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set oExec = WshShell.Exec("query session")
     
    do until trouve
     
    x = oExec.StdOut.ReadLine
    	if Left(x, 1)=">" then 
     
    		id=trim(Mid(x, 42,5))
    		trouve=true
     
    	end if
     
    loop
     
     
    Set oExec = WshShell.Exec("taskkill.exe /F /im CEGIApplication.exe /FI ""session eq "&id&"""")

Discussions similaires

  1. comment fermer le processus excel sous iis
    Par dietrich dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 16/01/2007, 14h32
  2. [VBS & WMI] récuperation processus distant
    Par nonotoubo dans le forum VBScript
    Réponses: 3
    Dernier message: 27/07/2006, 13h40
  3. [VBS]créer un processus
    Par cyrill.gremaud dans le forum VBScript
    Réponses: 8
    Dernier message: 20/01/2006, 23h54
  4. Fermer une application à l'aide de OnIdle
    Par Thierry Rapp dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/08/2002, 12h44

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