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

C# Discussion :

Savoir si un processus tourne et a été lancé avec une ligne de commande particulière ?


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2013
    Messages : 31
    Points : 26
    Points
    26
    Par défaut Savoir si un processus tourne et a été lancé avec une ligne de commande particulière ?
    Bonjour,



    Je sais, de façon assez facile, vérifier si un processus tourne.


    J'aimerais savoir s'il est faisable de vérifier si un processus tourne et s'il a été lancé avec une ligne de commande ou une autre.


    Ce genre d'information est présente avec un logiciel comme Process Explorer ou le gestionnaire de taches dans les versions Seven



    Exemple : j'ai un processus qui tourne, se nommant samsung.exe.


    J'aimerais vérifier s'il a été lancé en lançant samsung.exe /load, samsung.exe /service ou juste samsung.exe.



    Est-ce faisable ?





    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Effectivement la classe "Process" de l'espace de nom "System.Diagnostics" ne permet pas de récupérer la ligne de commande avec laquelle un exécutable a été lancé, si ce dernier l'a été en dehors de notre programme.

    Il est néanmoins possible de récupérer des informations avancées, comme par exemple la ligne de commande complète d'un programme, à l'aide d'une requête WMI.

    Voici un exemple rapide pour récupérer la ligne de commande de mon exécutable "toto.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
     
                            try
    			{
    				SelectQuery query = new SelectQuery("select * from Win32_Process where Name='toto.exe'");
    				ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
    				foreach (ManagementObject mObj in searcher.Get())
    				{
    					Debug.WriteLine("Ligne de commande : {0}", mObj.Properties["CommandLine"].Value);
    				}
    			}
    			catch (Exception exc)
    			{
    				MessageBox.Show(this, exc.Message, string.Empty, MessageBoxButton.OK, MessageBoxImage.Error);
    			}
    J'ai utilisé ici la classe WMI Win32_Process.

    N'oublie pas d'inclure l'assemblage "System.Management" dans tes références et un petit "using System.Management" pour utiliser les classes telles que "SelectQuery".

    N'oublies pas non plus de vérifier si le processus que tu veux est le bon. Tu peux par exemple aussi supposer que ce dernier ne sera lancé qu'à partir d'un chemin bien précis, et dans ce cas tu peux le vérifier avec la propriété "ExecutablePath". Si ton process n'est pas lancé, alors la collection renvoyée par "searcher.Get()" aura 0 pour "Count".

    N'hésites pas à cliquer sur les hyperliens que j'ai mis à disposition dans ce post pour avoir plus de détails, et n'hésites pas non plus à consulter l'aide MSDN sur les classes de "System.Management" que j'ai utilisé dans mon exemple.
    Dernière modification par Invité ; 13/05/2014 à 14h12.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2013
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Bonjour,


    Super, merci pour ta réponse, cela me convient parfaitement


    Amicalement,

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/06/2013, 15h52
  2. Réponses: 4
    Dernier message: 22/11/2007, 10h34
  3. Comment lancer une ligne de commande dans un processus en Java.
    Par doyouknow56 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 13/05/2006, 11h55
  4. [Sécurité] Savoir sous quel système tourne php
    Par oranoutan dans le forum Langage
    Réponses: 4
    Dernier message: 25/12/2005, 12h20
  5. Réponses: 6
    Dernier message: 19/10/2005, 18h21

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