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

Windows Discussion :

Liste ou ID objets DCOM


Sujet :

Windows

  1. #1
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut Objets WMI sous PHP
    Bonjour Bonjour, je suis actuellement à la recherche d'une liste ou alors des IDs pour pouvoir effectuer des operations distantes en PHP sur des supports USB.

    Le hic c'est que je n'arrive pas à trouver le nom de l'objet DCOM me permettant de manipuler les péripheriques USB.

    Sur google j'ai bien trouvé comment utiliser les DCOM, le truc c'est que ça je sais déja le faire.

    Donc si quelqu'un connais ou au moins sais ou trouver une liste contenant le nom ou l'id du ou des objets DCOM permettant de manipuler les periphs USB à distance l'effort serais grandement apprécié.

    Cheers.

  2. #2
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut
    Donc, j'avance un peu, grâce à dcomcnfg (une mmc windows), j'ai reussi à trouver une liste de composants DCOM, le hic c'est que maintenant je ne sais pas trop lequel utiliser pour accéder à une clé usb depuis un remote client.

    Voici ce que je veux faire:

    Depuis une interface Web PHP, je souhaite pouvoir aller browser une clé usb (JDFirefly contenant un certificat) afin de lire celui-ci pour authentifier un utilisateur sur cette même interface.

    Je suis dans un LAN donc la clé est bien reconnu partout et au niveau des credentials d'accès aux objets DCOM pas de souci.

    Pour le moment j'ai essayé ceci sans succés.

    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
    
    <?php
    //Utiliation des objets DCOM d'un poste distant.
    //INFORMATIONS DE CONNEXION
    $username='toto';
    $password='secret';
    $srvname='client';
    $instantobj='SystemInformation';
    
    //Instanciation d'un objet distant
    $objcom = new COM($instantobj,$srvname) or die("Impossible d'instancier l'objet");
    echo "SystemInformation connecté, version {$objcom->Version}\n";
    
    /* Fermeture de sysinfos */
    $objcom->Quit();
    
    /* Libération des ressources */
    $objcom = null;
    ?>
    Le hic c'est que je ne parviens pas à avoir les méthode possible d'utiliser avec l'objet DCOM SystemInformation, donc déjà je ne peux même pas tester si mon code fonctionne correctement.

    Je travail sur un PHP 5.3 et je teste le script en CLI.

    Merci de votre aide.

  3. #3
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut
    Bonjour, Bonjour,

    donc apres quelques jours de test, je me suis aperçue que SystemInformations ne contenais aucune méthode et donc aucune informations.

    donc petite question:

    Est ce que les objets DCom ont des methodes communes que je pourrais attaquer en PHP (Genre Version) afin de tester et ensuite pouvoir interroger un objet DCOM afin de récupérer des infos contenu sur une clé distante?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    DCOM est comme COM ordinaire, il n'y a aucune garantie à part que les trois méthodes de IUnknown sont présentes dans chaque interface.

    Ensuite, je ne sais pas comment marche COM sous PHP, mais il est possible que PHP soit seulement compatible avec IDispatch (donc, les dispinterfaces et les interfaces duales). PHP est un langage de script, et tu ne spécifies pas spécialement d'interface lors de l'instanciation, ceci corrobore cette théorie.

    Quant à l'USB, j'ignore quel genre d'interfaces les objets DCOM en question implémentent.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    J'ai l'impression que tu devrais regarder du coté de WMI.

  6. #6
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut
    ok, bon dans le cas de WMI est ce que tu aurais des infos sur l'USB? quel partie de la base doit je chercher?

    Pour le message concernant les DCOM et IDISPATCH, merci je vais jeter un oeil.

    Merci beaucoup de votre aide.

  7. #7
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Regarde déjà la classe Win32_USBControllerDevice.

  8. #8
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut
    Merci bien, bon juste une derniere question, dans un LAN pas de souci concernant le WMI mais Quid d'un accés Web?

    ce serais pas plutôt cette fiche que je devrais utiliser vue que une des propriété de la classe est: name qui est le nom du périphérique

    http://msdn.microsoft.com/en-us/libr...04(VS.85).aspx

    C'est con j'étais déjà aller sur le MSDN pour les W32/com mais en fr il n'affiche pas toutes les pages j'aurais du regarder en EN à la place.

    Comme quoi la recherche ça fait vraiment la différence.

  9. #9
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ArKam
    Merci bien, bon juste une derniere question, dans un LAN pas de souci concernant le WMI mais Quid d'un accés Web?
    Le web n'est pas trop mon domaine, php encore moins, regarde ce site.
    Citation Envoyé par ArKam
    ce serais pas plutôt cette fiche que je devrais utiliser
    Oui ou utiliser la propriété suivante( +- un pointeur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     CIM_USBController REF Antecedent
    Citation Envoyé par ArKam
    Comme quoi la recherche ça fait vraiment la différence.
    La pluspart des doc des API, donc WMI, sont uniquement en anglais, autant rechercher directement en anglais.

  10. #10
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut
    Donc, j'ai bien compris que mon salue serait en WMI.

    Malheureusement, je ne parviens pas à trouver pourquoi ma requete ne me retourne rien.

    Actuellement voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     //Instanciation d'un nouvel objet COM/WMI basiquement: $Nom_de_L'objet = Nom_de_La_Classe (Creation d'un nouvel objet a partir de la classe COM
    $wmi = new COM("WinMgmts:{impersonationLevel=impersonate}");
    //$wmi->ExecQuery attribut a la variable $wmi l'utilisation de la methode ExecQuery de WMI
    $name = $wmi->ExecQuery("SELECT * 
    	FROM Win32_USBController"); 
    echo $name;
    ?>
    Hors lors du echo $name, je devrait avoir des infos, ne serais ce qu'une bonne bouillie incompréhensible, mais là, rien, le vide, le néant.

    Est ce que je devrais envoyé le résultat de la requête dans un tableau??

  11. #11
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ArKam Voir le message
    Est ce que je devrais envoyé le résultat de la requête dans un tableau??
    Je ne comprends pas trop ce que tu fais en PHP, mais une fois l'objet COM WMI initialisé, il faut se connecter au référentiel de la machine cible, même en local.
    Sinon ou trouve-t-il les infos ?
    Pas dans ta poche

  12. #12
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut
    Ah bah tout de suite le manque de résultat parait plus évident.
    Je vais voir comment on gère ce genre de chose.

  13. #13
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut
    Bon bah c'est bon j'ai résolu mon souci.

    Merci à tous ceux qui m'ont aidés et puis voici un petit script que je laisse au cas ou d'autres personnes auraient besoin d'informations au sujet de WMI et PHP.

    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
    28
    29
    30
    31
    <?php
    	//Instanciation d'un nouvel objet COM/WMI basiquement: $Nom_de_L'objet = Nom_de_La_Classe (Creation d'un nouvel objet a partir de la classe COM
        $obj = new COM ( 'winmgmts:{impersonationLevel=impersonate}//REMOTESRV.DOMAINENAME/root/CIMV2' );
    	//$wmi->ExecQuery attribut a la variable $wmi l'utilisation de la methode ExecQuery de WMI
        $wmi_computersystem =    $obj->ExecQuery("Select * from Win32_ComputerSystem");
        $wmi_bios           =    $obj->ExecQuery("Select * from Win32_BIOS");
    	$wmi_usb			=	 $obj->ExecQuery("Select * from Win32_USBController");
    	
    	//Attribut à $wmi_call les valeur du tableau $wmi_instructions, par exemple: ci dessous nous demandons d'attribuer chaque valeur de champs a wmi_call puis nous affichons la valeur de wmi_call pour l'entrée Model du tableau de wmi_computersystem.
        foreach ( $wmi_computersystem as $wmi_call )
        {
            $model = $wmi_call->Model;
        }
       
        foreach ( $wmi_bios as $wmi_call )
        {
            $serial = $wmi_call->SerialNumber;
            $bios_version = $wmi_call->SMBIOSBIOSVersion;
        }
    	
    	foreach ($wmi_usb as $wmi_call)
    	{
    		$usbcon = $wmi_call->Name;
    	}
    	
      echo "Bios version   : $bios_version\n".
             "Serial number : $serial\n".
             "Hardware Model : $model\n".
             "USB Connector   : $usbcon\n";
    ?>

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

Discussions similaires

  1. Liste déroulante avec objet différent en VBA
    Par béber_novice dans le forum Général VBA
    Réponses: 1
    Dernier message: 16/04/2012, 20h07
  2. [POO] Listing avec des objets
    Par estampille dans le forum Langage
    Réponses: 5
    Dernier message: 27/08/2007, 16h19
  3. Coder une liste chaînée d'objets.
    Par Jean_Benoit dans le forum C++
    Réponses: 5
    Dernier message: 18/10/2006, 21h29
  4. [Threads]liste de mes objets de types threads
    Par comme de bien entendu dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 22/03/2006, 15h46
  5. Mal a la tete avec liste chainée d'objet
    Par Raton dans le forum C++
    Réponses: 23
    Dernier message: 03/08/2005, 22h13

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