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 :

tuer un processus


Sujet :

VBScript

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut tuer un processus
    Bonjour, suite à la discussion : http://www.developpez.net/forums/sho....php?p=1160261

    J'ai essayé le script ci dessous et il fonctionne mais ce n'est valable que pour le profil qui l'envoie. Je m'explique : je voudrais lancer une installation par un logiciel de publicatiion d'application Microsoft (SMS) et arreter internet explorer s'il est lancé par l'utilisateur. Le processus n'est pas killé par l'installation car ce n'est pas elle qui l'a lancé.
    J'ai fait un OWs.Run "taskkill /F /IM " & Chr(34) & "iexplore.exe" & Chr(34)
    qui fonctionne mais cela m'ouvre une fenetre Dos et mon installation n'est pas silencieuse.

    Je suis allé sur MSDN et j'ai l'info suivante mais je ne sais pas l'appliquer si quelqu'un peut m'aider :

    Remarks
    To terminate a process that you do not own, enable the SeDebugPrivilege privilege. In VBScript, you can enable this privilege with the following lines of code:

    [VBScript]

    [VBScript]
    Copy Code
    Set objLoc = createobject("wbemscripting.swbemlocator")
    objLoc.Security_.privileges.addasstring "sedebugprivilege", true


    Merci de votre aide.

  2. #2
    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 : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    C'est simple en général je donne ce que j'utilise le plus fréquement. Et comme je n'ai de problème de droits j'utilise ce que je trouve être le plus simple.

    swbemlocator est une méthode pour te conencter à un poste distant en utilisant les droits utilisateur que tu souhaites. Et donc pas ceux de l'utilisateur exécuteur du script.

    Je te renvois à cette page pour son utilisation :
    http://msdn2.microsoft.com/en-us/lib...90(VS.85).aspx

    Le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    strComputer = "atl-dc-01"
    Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objSWbemServices = objSWbemLocator.ConnectServer _
        (strComputer, "root\cimv2", "fabrikam\administrator", "password")
    objWMIServices.Security_.ImpersonationLevel = 3
    Code qui doit remplacer les ligne suivante du script que j'avais fournis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Normalement cela devrait aller avec ce que je t'ai donné
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je remercie ced600 de m'avoir répondu. En fait je ne fais pas de remote connexion et mon poste est en local. Je lance l'installation de mon application en local par l'intermediaire d'un logiciel qui lui a les droits systèmes (tandis que l'util lui n'a que des droits pas avancés : ne peut ni installer ni supprimer .......). Donc le debut du code devrait commencer avec strComputer = "." et je ne dois pas mettre ni de nom de poste ni de mot de passe.
    J'éspère avoir été clair dans mes explications.
    Je vais essayer de modifier le code que tu m'as livré mais je ne pense pas que je puisse l'utiliser dans mon cas.

    Et merci encore !!

  4. #4
    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 : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Non pas clair du tout.
    Si tu ne met pas de login/password, tu ne peux pas choisir d'utilisateur. Et donc tu executera en tant qu'utilisateur avec droit restreint.
    Mais bon sis tu veux quand même le faire, regarde sur le lien que je t'ai fournis. Peut être que certain paramètre sont optionnel.

    Tu peux utiliser ce code en local. Avec '.' je ne sais pas si cela marche, mais au pire mais le nom du PC local, ou son adresse IP
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour Ced600,

    En fait je travaille dans une société où il y a 5000 postes en XP.Lorsqu'un utilisateur a besoin d'installer un logiciel,il lance une depeche et un installateur se déplace sur son poste.Il se logue avec son loggin d'administrateur et lance le un logiciel qui lui permet d'avoir la liste des logiciels disponibles et installables via un serveur d'applications.Ce logiciel s'appelle SMS 2003 et fait les fonctions suivantes :
    SMS 2003 est une solution complète et performante dans les domaines suivants :

    Gestion de parcs, grâce au regroupement de données par les inventaires matériel et logiciel

    Le déploiement et l’installation d’applications en tous genre

    Une gestion et une prise en charge avancée des ressources mobiles

    Gestion et suivi des correctifs de sécurité

    Dans mon cas, je suis integrateur d'applications sous Installshield et je mets à disposition des packages automatisés au niveau installation.Quand j'ai fini l'intégration,je les place sur le serveur et ce package sera installé sur les postes clients à la demande.Ce ne sera pas une installation à distance donc je n'ai ni besoin du loggin de l'util ni de son @ip.

    Par contre, l'installateur viendra installer le logiciel demandé et dans mon logiciel avant que je lance mon package, je lance le script en vbs qui kill le process Iexplore.exe. Si ce process est ouvert par l'installateur (si l'installateur a ouver un navigateur lors de l'installation), le logiciel qui lance l'installation n'est pas proprietaire de ce process et mon script ne tue pas le process internet explorer.

    Je pense que c'est assez explicite.

  6. #6
    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 : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Si ce process est ouvert par l'installateur (si l'installateur a ouver un navigateur lors de l'installation), le logiciel qui lance l'installation n'est pas proprietaire de ce process et mon script ne tue pas le process internet explorer.
    Donc il faut faire en sorte que le script se lance avec des droits d'administrateurs qui lui permettent de tuer des processus dont il n'est pas propriétaire. Ou de se lancer avec les droits du propriétaire du processus.
    C'est ce que te permets swbemlocator que ce soit en local ou à distance. Je n'ai juste jamais utilisé les raccourci '.', mais au pire tu mets "127.0.0.1" en adresse IP cela devrait marcher.

    Donc oui tu as besoin d'un nom d'utilisateur, d'un mot de pass, si tu veux changer l'utilisateur lanceur du script.
    Pour agir avec les droits de quelqu'un d'autre.
    Pas moyen de changer un profil sans fournir un login et un mot de pass, sinon n'importe qui pourrait le faire.

    Est ce que tu comprends ce que je dit ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  7. #7
    Membre averti
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 341
    Points
    341
    Par défaut
    Salut,

    tout comme CED600, je ne suis pas certain que sans droits d'admins ton utilisateur puisse tuer un process et que pour toi la meilleure solution serait de le faire à distance (suivant les bons conseils de CED600).
    Sinon, va voir cet article "How Can I Terminate a Process with a Specific PID?" des scripting guys, le dernier exemple termine le process Notepad, remplace le par IE.

    http://www.microsoft.com/technet/scr...4/hey0927.mspx

    Et puis si tu veux donner des droits d'admin provisoire à une personne qui n'en dispose pas, tu peux utiliser le XRUNAS de JC Bellamy qui est très efficace :

    http://jc.bellamy.free.fr/fr/vbsdownload.html#xrunas


    A++
    Plus tu pédales moins vite, moins t'avances plus vite.

  8. #8
    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 : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Très bon site, et JC bellamy est très doué.
    Je ne savais pas que c'était lui qui a fait superexec. Balaise ce gars.
    Je me souviens que cela m'a été très utile il y a une epoque !!!
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  9. #9
    Membre averti
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 341
    Points
    341
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Je me souviens que cela m'a été très utile il y a une epoque !!!
    Pareil ! Nous sommes un peu les fils de Jean Claude !!
    Les exemples sont très pédagogiques ca vaut vraiment le coup de s'y pencher lorsqu'on souhaite progresser rapidement.

    A++
    Plus tu pédales moins vite, moins t'avances plus vite.

Discussions similaires

  1. 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
  2. Tuer un processus sur une machine distante
    Par nuke_y dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 16/11/2004, 09h55
  3. Comment tuer le processus ez-ipupdate
    Par berry dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 21/06/2004, 15h07
  4. Tuer le processus d'Interbase ?
    Par JezabelleTwin dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/04/2004, 13h09
  5. [VB6] [Système] Tuer un processus courant
    Par mdoyer dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 22/10/2002, 14h47

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