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

API, COM et SDKs Delphi Discussion :

Probleme avec delphi et WMI. [FAQ]


Sujet :

API, COM et SDKs Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut Probleme avec delphi et WMI.
    Bonjour,

    Je souhaite faire du remote WMI à partir de mon programme. Ce programme est un Service (d'ou l'appelle a LogonUser).
    Mon probleme est que je n'arrive pas à me connecter (ConnectServer) à une machine avec Window 2003.
    Message d'erreur : "Accès refusé" et j'ai beaucoup de mal à comprendre pourquoi.
    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
     
    begin
       if not LogonUser (User, '', Pass, LOGON32_LOGON_BATCH, LOGON32_PROVIDER_DEFAULT, Logon) then
       WriteLn(F,SysErrorMessage(GetLastError));
     
       // Use the User now logged
       ImpersonateLoggedOnUser(Logon);
     
       CoInitialize(nil);
       WMILocator:= TSWbemLocator.Create(nil);
       try
          WriteLn(F,'ConnectServer');
          WmiService:= WMILocator.ConnectServer(Serv, 'ROOT\CIMV2', '', '', '',
                                          '', wbemConnectFlagUseMaxWait, nil);
          WriteLn(F,'Connected');
       except
          on E:Exception do begin
             WriteLn(F,E.Message);
             end;
          end;
       WMILocator.Free;
       RevertToSelf;
       CloseHandle(Logon);
    end;
    Voilà cela marche pour acceder à un Windows 2000 mais pas un 2003
    Ceci dit en utilisant le même code dans une programme en ligne de commande (pas un Service avec LOCALSYSTEM) çà marche très bien
    D'ailleurs en paramétrant mon Service pour qu'il se lance avec un compte utilisateur spécifié çà marche partout ...

    Merci

  2. #2
    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 Re: Probleme avec delphi et WMI.
    Salut,
    Citation Envoyé par LeBigornot
    Message d'erreur : "Accès refusé" et j'ai beaucoup de mal à comprendre pourquoi.
    Je pencherais pour un problème de droit insuffisant.
    L'eventlog ne contient pas d'info ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Merci l'eventlog m'a bien aidé ...
    j'ai pu voir que ma demande de connexion n'était pas associée à mon User (celui du Logon User).

    En fait je pensais qu'il fallait que je fasse le "LogonUser" mais il ne sert a rien pour se connecter à WMI à distance.
    Il faut entrer les nom d'utilisateur le mot de passe dans le ConnectServer.
    Le seul truc c'est qu'il faut bien rentrer le nom de Domaine du User dans son nom.

    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    begin
       CoInitialize(nil);
       WMILocator:= TSWbemLocator.Create(nil);
       try
          WmiService:= WMILocator.ConnectServer(Serv, 'ROOT\CIMV2', '[Domain]\[User]', '[Pass]', '',
                                          '', wbemConnectFlagUseMaxWait, nil);
       except
          on E:Exception do ...
          end;
       WMILocator.Free;
    end;
    Sachant que si la machine distance n'est pas dans un domaine (mais dans un groupe de travail) c'est le nom de la machine distante qu'il faut mentionner et çà marche niquel !

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

Discussions similaires

  1. probleme avec delphi
    Par hala02 dans le forum Bases de données
    Réponses: 4
    Dernier message: 14/07/2011, 12h15
  2. Probleme avec Delphi.net
    Par nah_wah dans le forum Delphi .NET
    Réponses: 3
    Dernier message: 17/06/2009, 15h06
  3. delphi 2005 perso probleme avec ADO
    Par corvington dans le forum Bases de données
    Réponses: 1
    Dernier message: 16/03/2006, 18h23
  4. [Kylix] Erreur "File not Found : Windows.dcu"
    Par derrick23_2003 dans le forum EDI
    Réponses: 4
    Dernier message: 27/12/2005, 11h18
  5. probleme sql avec delphi
    Par lil_jam63 dans le forum Bases de données
    Réponses: 7
    Dernier message: 25/02/2004, 04h32

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