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++/CLI Discussion :

Propriétaire d'un processus sous Windows


Sujet :

C++/CLI

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Par défaut Propriétaire d'un processus sous Windows
    Bonjour,

    Je cherche à obtenir le propriétaire d'un processus, en passant par l'api WMI sous windows.

    J'ai cru comprendre qu'il fallait utiliser la fonction GetOwner
    http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

    Mais je n'arrive pas y avoir accès directement (une fonction oui mais sur quel objet ?)

    Je suis donc passé par le serveur d'exécution via la fonction ExecMethod
    http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

    Et je suis finalement arrivé à avoir un code d'erreur qui existe dans la doc : WBEM_E_INVALID_METHOD_PARAMETERS


    J'effectue ma connexion au serveur via le Namespace "ROOT\\CIMV2"
    Puis je lance ma requête qui passe fonctionne sans problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        hres = pSvc->ExecQuery(bstr_t("WQL"), 
    			   bstr_t("SELECT * FROM Win32_Process WHERE Name = \"bash.exe\""),
    			   WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, 
    			   NULL,
    			   pEnumerator);
    Et la c'est le drame :

    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
     
     
        IWbemClassObject *classObj;
        IWbemCallResult *callRes;
        BSTR Text;
     
    /* renvoie un code d'erreur non defini dans la doc : 0xc0000005*/    
    /*    hr = pSvc->ExecMethod(_bstr_t(L"ROOT\\CIMV2"), L"GetOwner", 
    			   0, NULL, NULL, 
    			   &classObj, &callRes);*/
     
    /* renvoie un code d'erreur WBEM_E_INVALID_METHOD_PARAMETERS */    
        hr = pSvc->ExecMethod(L"Win32_Process", L"GetOwnerSid", 
    			   0, NULL, NULL, 
    			   NULL, NULL);
    Et je commence un peu à être à cours d'idées à tester

    Plate forme : Windows server 2003 R2
    compilo : MVSC 2010
    Je ne suis absolument pas un expert windows

  2. #2
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Je suis donc passé par le serveur d'exécution via la fonction ExecMethod
    tu ferais mieux de calquer sur les exemples fournis avec le premier lien que tu as donné

  3. #3
    Membre éclairé Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Par défaut
    1 Le premier lien renvoie vers la page de la doc de la class Win32_Process, je n'ai pas de problème à faire une requête WMI dans cette class

    2 Le deuxième lien aurait pu m'aider si il était dans le bon langage

    3 Oui j'ai déjà essayé de "calquer" tous les exemples que j'ai trouvé, sans quoi je n'aurais pas poster de demande ici

  4. #4
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    1 Le premier lien renvoie vers la page de la doc de la class Win32_Process, je n'ai pas de problème à faire une requête WMI dans cette class
    perso j'y ai trouvé les exemples suivants :
    Examples

    For script code examples, see WMI Tasks for Scripts and Applications and the TechNet ScriptCenter Script Repository.
    For C++ code examples, see WMI C++ Application Examples.
    The following VBScript code example obtains the owner for each running process.

    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
    strComputer = "."
    Set colProcesses = GetObject("winmgmts:" & _
       "{impersonationLevel=impersonate}!\\" & strComputer & _
       "\root\cimv2").ExecQuery("Select * from Win32_Process")
     
    For Each objProcess in colProcesses
     
        Return = objProcess.GetOwner(strNameOfUser)
        If Return <> 0 Then
            Wscript.Echo "Could not get owner info for process " & _  
                objProcess.Name & VBNewLine _
                & "Error = " & Return
        Else 
            Wscript.Echo "Process " _
                & objProcess.Name & " is owned by " _ 
                & "\" & strNameOfUser & "."
        End If
    Next
    n'est-ce pas suffisant ?
    Soit tu fais le portage de ce code VB (pas super dur à mon avis).
    Soit tu vas regarder les exemples C++ (après je ne suis pas réellement sûr que tu y vois d'exemple de la fonction qui t'intéresse) dont il y a les liens.

    2 Le deuxième lien aurait pu m'aider si il était dans le bon langage
    non mais ExecMethod, comme j'avais essayé de te le dire dans mon précédent post, c'est complètement hors sujet

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/04/2008, 19h00
  2. Comment intercepter les messages d'un processus sous windows?
    Par Hamdi Hedhili dans le forum Général Java
    Réponses: 3
    Dernier message: 17/03/2008, 16h57
  3. Gestion de Processus sous Windows
    Par m.david dans le forum Threads & Processus
    Réponses: 11
    Dernier message: 21/10/2007, 23h33
  4. Réponses: 9
    Dernier message: 21/12/2005, 17h33
  5. [Système]communiquer avec un processus externe sous windows
    Par tweety dans le forum Général Java
    Réponses: 4
    Dernier message: 14/11/2005, 17h17

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