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

VB.NET Discussion :

Recuperation argument processus


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Par défaut Recuperation argument processus
    Bonjour,

    je cherche a recuperer les arguments de certains processus tournant sur le serveur sur lequelle s'execute un site en ASP.NET (VB).

    Pour ce faire, je recupere la liste des processus avec System.Diagnostic.Process.GetProcesses("monProcess")

    puis pour chaque process :
    je lance un fonction avec comme paramètre un process.
    Dans cette fonction, j'utilise une fonction de la dll ntdll.dll (pas trouver mieux pour recuperer les argument de processus independant du site)
    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
    <StructLayout(LayoutKind.Sequential)> Structure PROCESS_BASIC_INFORMATION
            Public ExitStatus As Integer
            Public PebBaseAddress As Integer
            Public AffinityMask As Integer
            Public BasePriority As Integer
            Public UniqueProcessId As Integer
            Public InheritedFromUniqueProcessId As Integer
            Public Function Length() As Integer
                Return Len(Me)
            End Function
        End Structure
     
        <DllImport("ntdll.dll")> _
        Public Shared Function NtQueryInformationProcess(ByVal processHandle As IntPtr, ByVal processInformationClass As Integer, _
        ByRef processInformation As PROCESS_BASIC_INFORMATION, ByVal processInformationLength As Integer, _
        ByVal returnLength As IntPtr) As Integer
        End Function
    Voila donc ma structure se remplie mais ensuite, un membre de cette structure contient un pointeur vers une autre structure qui contient elle même encore un pointeur vers une autre structure qui contient enfin un membre de type UNICODE_STRING en C qui s'appelle CommandLine.

    Après tous ca ma question est finallement assez courte, comment recuperer le membre CommandLine ?

    Voila la definition en C des différentes structures :
    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
    typedef struct _PROCESS_BASIC_INFORMATION {
        PVOID Reserved1;
        PPEB PebBaseAddress;
        PVOID Reserved2[2];
        ULONG_PTR UniqueProcessId;
        PVOID Reserved3;
    } PROCESS_BASIC_INFORMATION;
     
     
    typedef struct _PEB {  
      BYTE Reserved1[2];
      BYTE BeingDebugged;
      BYTE Reserved2[9];
      PPEB_LDR_DATA LoaderData;
      PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
      BYTE Reserved3[312];
      PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine;
      BYTE Reserved4[132];
      ULONG SessionId;
    } PEB,  *PPEB;
     
    typedef struct _RTL_USER_PROCESS_PARAMETERS {
      BYTE Reserved1[56];
      UNICODE_STRING ImagePathName;
      UNICODE_STRING CommandLine;
      BYTE Reserved2[92];
    } RTL_USER_PROCESS_PARAMETERS,  *PRTL_USER_PROCESS_PARAMETERS;
    Voila j'ai pas mal chercher mais je galère.

    Nota : C'est mon premier programme en VB.Net alors soyez indulgent...

    A+

  2. #2
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Par défaut
    petit Up, si ma question est mal formuler n'hesiter pas a me le dire j'essayerais de la poser autrement. C'est vrai que moi je sais ce que je veux faire alors forcement je comprend ma question mais c'est pas toujours evidant de se faire comprendre.

    A+

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Par défaut
    Bon peut être que ce n'est pas faisable comme je pensais le faire.

    Peut être que quelqu'un a une idee?

    A+

  4. #4
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Par défaut
    up

  5. #5
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Par défaut
    Bon voyant que je n'avancerais pas plus dans cette voix, j'ai decidier de faire une dll en C++ qui fait ce dont j'ai besoin et qui me renvoie un chaine de caractère contenant la ligne de commande.
    Voici son prototype :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool getCommandLineByPid(long *pID,char** buffer,long *bufLength).
    C'est plus simple de gerer la recupération de la ligne de commande en C++.

    Sous VB.NET je n'ai plus qu'a appeler ma fonction avec un Dllimport.

    Merci.
    A+

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

Discussions similaires

  1. Recuperer les processus du systeme ?
    Par kedare dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 06/04/2007, 21h21
  2. recuperer argument depuis url
    Par jejam dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/01/2006, 11h41
  3. Réponses: 4
    Dernier message: 02/11/2005, 16h16
  4. Réponses: 10
    Dernier message: 13/05/2005, 12h08
  5. Réponses: 2
    Dernier message: 04/10/2002, 09h13

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