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 :

Utilisation de LogonUser


Sujet :

C++/CLI

  1. #1
    DrQ
    DrQ est déconnecté
    Membre émérite
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Par défaut Utilisation de LogonUser
    Bonjour,

    Je souhaite exécuter une commande sur un poste distant mais en utilisant un compte local du poste distant.

    voici le code que j'utilise :
    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
     
    if (LogonUser(_strUsername, _strDomain, _strPassword, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, out hToken))
    {
             System.Diagnostics.Trace.TraceInformation("  Logon succeed!");
     
             if (DuplicateToken(hToken, 2, out hTokenDuplicate))
             {
                    oWindowsIdentity = new WindowsIdentity(hToken);
                    oWindowsImpersonationContext = oWindowsIdentity.Impersonate();
     
                    // Mon traitement
     
                    oWindowsImpersonationContext.Undo();
     
                    oWindowsImpersonationContext.Dispose();
                    oWindowsImpersonationContext = null;
                    oWindowsIdentity.Dispose();
                    oWindowsIdentity = null;
              }
              if (hTokenDuplicate != IntPtr.Zero) CloseHandle(hTokenDuplicate);
    }
    else 
    {
             System.Diagnostics.Trace.TraceWarning("  Logon failed  : " + GetLastError());
    }
    Ce code fonctionne très bien avec un compte d'un domaine NT mais pas avec un compte local de la machine distante.
    Quelqu'un aurait une idée ?

    D'avance merci.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Salut,

    Je ne vois pas comment ça peut marcher, a moins d'exécuter ce code sur la machine distante . Aprés tout un compte local à cette machine n'est connu que d'elle même... Cela dit je ne suis pas un expert sécurité.

    PS: d'ailleurs tu aurais surement plus de réponse dans le forum "windows/sécurité" je pense

  3. #3
    DrQ
    DrQ est déconnecté
    Membre émérite
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Par défaut
    Le but à la base de pouvoir contrôler la présence d'un fichier ou d'un répertoire sur une machine où le compte executant le code n'est pas les droits.
    Du coup je dois passer par un système d'impersonnalisation pour pouvoir faire ce que je veux.
    Et comme Microsoft nous offre un joli moyen de te faire passer pour qui tu veux reste plsu qu'à trouver comment l'utiliser correctement

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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