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 :

WMI Distant : deux domaines différents


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 104
    Points : 40
    Points
    40
    Par défaut WMI Distant : deux domaines différents
    Bonjour,

    J'ai un programme qui permet de se connecter à une machine distante avec son adresse IP pour récupérer quelques informations.

    Si la machine cible et la machine ou j'execute le programme appartiennent au même domaine , mon programme rend le résultat souhaité mis si les deux machines n'appartiennent aux deux domaines différents s'achant que j'utilise lors de ma connection via wmi le compte de la machine cible, j'ai eu le message d'erreur suivant : 2147217405 : accés réfusé.

    D'aprés la lecture de documentation sur WMI, on peut interroger une machine qui ne fait pas partir de domaine ou s'execute le programme initial

    Avez vous une idée sur ce problème en C++?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Le problème se trouve surement à la ligne 342, juste après le premier 0

    Plus sérieusement, si tu n'en dis pas d'avantage, il nous sera difficile de t'aider, mais, dans l'ordre, je vérifierais
    1- que tu as les droits d'accès au domaine distant
    2- que le domaine distant soit accessible
    3- que tout ce qui doit être fait pour accéder au domaine distant soit effectivement fait
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 104
    Points : 40
    Points
    40
    Par défaut
    Bonjour,

    En fait j'utilise le login et mot de passe de la machine cible, donc il a tout le droit et en plus il est administrateur sur sa machine.

    voici les différents méthode que j'ai utilisé pour la connexion a distance et pour executer une requête :
    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
    32
    33
    34
     
    m_hresult_= CoInitializeSecurity(
    					NULL,                      
    					-1,                        
    					NULL,                      
    					NULL,                      
    					RPC_C_AUTHN_LEVEL_DEFAULT, 
    					RPC_C_IMP_LEVEL_IMPERSONATE,
    					NULL,                        
    					EOAC_NONE,                   
    					NULL); 
     m_hresult_ = CoCreateInstance(
    				CLSID_WbemLocator,
                    0, 
                    CLSCTX_INPROC_SERVER,
                    IID_IWbemLocator,
                    (LPVOID *) &m_pIWbemLocator);
     
       m_hresult_ = m_pIWbemLocator->ConnectServer(
                        _bstr_t(sWMIServerRoot.c_str()),
                        NULL,
                        NULL,
                        0,
                        NULL,
                        0,
                        0,
                        &m_pIWbemServices);
     
     m_hresult_ = m_pIWbemServices->ExecQuery(
                    bstr_t("WQL"), 
                    bstr_t("SELECT * FROM Win32_ComputerSystem"),
                    WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, 
                    NULL,
                    &pEnumClassObject);
    Au niveau de la connexion je n'ai pas eu de problème, mais le problème exactement à l'execution de la requête

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 104
    Points : 40
    Points
    40
    Par défaut
    Plutôt pour la connexion au serveur distant j'ai utilisé cette méthode en passant les paramètres de connexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    m_hresult_ = m_pIWbemLocator->ConnectServer(
                        _bstr_t(sWMIRoot.c_str()),
                        _bstr_t(sLoginWMI.c_str()),                         // User name
                        _bstr_t(sPasswordWMI.c_str()),			            // User password
                        NULL,									            // Locale             
                        NULL,									            // Security flags
                        _bstr_t(sDomaineBis==""?NULL:sDomaineBis.c_str()),	// Authority        
                        0,										            // Context object 
                        &m_pIWbemServices						            // IWbemServices proxy
                        );

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    J'ai exactement le même type de problème avec les mêmes lignes de code : toutes les initialisations et connexions fonctionnent bien mais le query me retourne le message suivant :

    "0x80010108 The object invoked has disconnected from its clients."
    Pour info : j'ai un utilitaire "wmiexplorer" qui fonctionne très bien. Je pense donc qu'il manque quelque chose dans l'init ?

    Même en modifiant mon avec la ligne précédente, l'erreur est la même pour ma part.
    Mon code de connect et de query est :
    l_o_resultHandle = m_p_IWbemLocator->ConnectServer(
    _bstr_t(m_s_WMIClassServerName.c_str()),
    _bstr_t(l_ca_sessionName),
    _bstr_t(l_ca_sessionPwrd),
    _bstr_t(L"MS_409"),
    NULL,
    _bstr_t(L""),
    0,
    &m_p_IWbemServices);

    ...

    l_o_resultHandle = m_p_IWbemServices->ExecQuery(
    bstr_t("WQL"),
    bstr_t(p_upc_BufferToWrite),
    WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
    NULL,
    &l_po_enumerator);

    Si quelqu'un a une idée ...
    Merci

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Points : 27
    Points
    27
    Par défaut
    Je viens de trouver une réponse à mon erreur sur le query :
    -> celle ci est executée dans un thread et apparement c'est incompatible avec une init et une connection en dehors du thread.


    Cela peut peut être d'aiguiller vers une solution ....


    Par contre je tombe sur une autre soucis qui est :

    -> E_ACCESSDENIED lors du query

    Je suis donc toujours prenneur d'idées sur ce point ...

Discussions similaires

  1. Problème d’accès DB : application C/S sur deux domaines différents
    Par nabsoft1977 dans le forum Connexions aux bases de données
    Réponses: 0
    Dernier message: 04/12/2011, 01h49
  2. Réponses: 9
    Dernier message: 06/09/2011, 15h35
  3. une IP deux domaines différents
    Par remyv23 dans le forum Développement
    Réponses: 2
    Dernier message: 23/02/2010, 12h01
  4. Réponses: 3
    Dernier message: 09/07/2008, 01h25
  5. Deux domaines différents
    Par alex_m94 dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 10/09/2007, 13h23

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