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++Builder Discussion :

Ex�cuter en tant que ... [FAQ]


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2002
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 23
    Par d�faut Ex�cuter en tant que ...
    Bonjour,
    Je dois ex�cuter sur diff�rents postes (donc avec des configs diff�rentes) des ex�cutables. Les chemins d'acc�s de ces derniers sont stock�s dans une base de donn�es. Jusqu'ici �a va.
    Pour les ex�cuter, j'utilise le code suivant :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    if (FileExists(AnsiString(PATH_SHARED)+"\\"+SMInfo_file))
       {
          AnsiString x;
          ShellExecute(0, static_cast<const char*>(x.data()), AnsiString(AnsiString(PATH_SHARED)+"\\"+ SMInfo_file).c_str(), NULL, NULL, SW_SHOWMINNOACTIVE);
       }
    PATH_SHARED correspond au chemin d'acc�s.
    SMInfo_file correspond au nom du fichier � ex�cuter.
    Or certains EXE n�cessitent d'�tre en Administrateur. Comment puis-je faire pour leur communiquer mes login et mot de passe ? M�me si ils sont � inscrire en dur dans l'exe, peu importe, du moment que l'utilisateur n'a pas � les saisir.
    Merci d'avance pour toute info.

  2. #2
    Membre averti
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2002
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 23
    Par d�faut
    J'ai bien trouv� un moyen en utilisant la commande RUNAS accessible sous Win2k et WinXP, mais cette commande n�cessite de rentrer le mot de passe du compte utilisateur transmis en argument. Impossible donc d'obtenir un lancement enti�rement "silencieux" pour un utilisateur lambda disposant de droits restreints.
    Si quelqu'un a une id�e, je suis preneur. :o

  3. #3
    Membre �clair�

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 59
    Par d�faut
    Il existe une astuce un peu tordu....
    Dans un premier temps tu fais une tache planifier qui a les droit admin sur la machine dans cette tache tu fais executer un fichier bat du genre

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    si le prg toto.exe est present alors executer toto.exe sinon ... la suite.
    c'est un chouette code !!!!!!
    et tu met ton prg a la place de toto.exe .....

    apres pour afiner tous ca tu peut dire a ta tache planifier de s'executer qu'une seul fois ou a chaque demarrage....

    si tu cherche un peut avec les script de login de tes user ou de tes machine tu doit pouvoir fair ca en automatique depuis ton serv et
    comme tu est administrateur de ton domaine :-) tu doit pouvoir fabriquer les taches planifier sur les machines distantes depuis ton canape (depuis ton poste de travail)...

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Par d�faut
    Regarde du c�t� de CreateProcessAsUser :

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocessasuser.asp

  5. #5
    Membre averti
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2002
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 23
    Par d�faut
    J'essaye d'utiliser CreateProcessAsUser, mais cette m�thode n�cessite un Primary Token dans son argument HANDLE hToken.
    J'utilise donc la m�thode LogonUser pour acqu�rir ce handle, mais sans succ�s. Le hToken reste toujours � NULL. Voici mon code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    HANDLE wToken = NULL;
       int iAns = LogonUser("nom_user", "domain_user", "pwd_user", LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, &wToken);
    Je suis scrupuleusement la doc trouv�e sur MSDN, mais sans succ�s.
    http://msdn.microsoft.com/library/de.../logonuser.asp
    http://msdn.microsoft.com/library/de...cessasuser.asp

    Quelqu'un a-t-il une id�e ?

  6. #6
    Membre averti
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2002
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 23
    Par d�faut
    Peut-�tre pourrais-je m'en sortir tout simplement en utilisant la m�thode CreateProcessWithLogonW dont voici la doc :
    http://msdn.microsoft.com/library/de...withlogonw.asp
    Affaire � suivre ...

  7. #7
    Membre averti
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2002
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 23
    Par d�faut
    Ca y est, j'ai enfin trouv� (ouf !) 8)
    Et voici le code pour ceux que �a int�resse :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
       // Laisser les L devant les chaînes de caractères, ils permettent de les
       // caster directement en LPCWSTR
       // Pour info : après plusieurs tentatives, ni le login ni le password ne sont
       // lisibles en clair dans l'EXE après la compilation.
       // Pour plus d'info sur la méthode CreateProcessWithLogonW, consulter la doc
       // consultable sur MSDN.
       LPCWSTR lpUsername = L"fverneau";      // saisir le login du user
       LPCWSTR lpDomain = L"GT75";            // définir le domaine du user, "." pour l'ordinateur local
       LPCWSTR lpPassword = L"c+jsp@gt89-";   // saisir le mot de passe du user
       LPCWSTR lpApplicationName = L"\\\\parns006\\gestparc$\\Client.exe";  // Chemin et application à exécuter
       WCHAR szCommandLine[] = {L""};   // paramètres à passer en ligne de commande
       DWORD dwCreationFlags = NULL;
       LPVOID lpEnvironment = NULL;
       LPCWSTR lpCurrentDirectory = NULL;     // Possibilité d'indiquer un répertoire d'exécution (par défaut le même répertoire que le répertoire de l'application a exécuter)
       STARTUPINFOW lpStartupInfo;
       PROCESS_INFORMATION lpProcessInfo;
     
       memset(&lpStartupInfo, 0, sizeof(lpStartupInfo));  // réservation de la mémoire pour StartupInfo
       memset(&lpProcessInfo, 0, sizeof(lpProcessInfo));  // réservation de la mémoire pour ProcessInfo
       lpStartupInfo.cb = sizeof(lpStartupInfo);
     
       if(!CreateProcessWithLogonW(           // la méthode, enfin ...
          lpUsername,
          lpDomain,
          lpPassword,
          LOGON_WITH_PROFILE,
          lpApplicationName,
          szCommandLine,
          dwCreationFlags,
          lpEnvironment,
          lpCurrentDirectory,
          &lpStartupInfo,
          &lpProcessInfo))
       {                                      // En cas d'erreur un message est affiché contenant la cause exacte de l'erreur.
          LPVOID lpMsgBuf;
          FormatMessage(
             FORMAT_MESSAGE_ALLOCATE_BUFFER |
             FORMAT_MESSAGE_FROM_SYSTEM |
             FORMAT_MESSAGE_IGNORE_INSERTS,
             NULL,
             GetLastError(),
             MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
             (LPTSTR) &lpMsgBuf,
             0,
             NULL);
          MessageBox(NULL, (LPCTSTR)lpMsgBuf, NULL, MB_OK | MB_ICONEXCLAMATION);
          LocalFree(lpMsgBuf);                // Libération du pointeur du message d'erreur
       }
       CloseHandle(lpProcessInfo.hProcess);   // libération de Process créé par CreateProcessWithLogonW
       CloseHandle(lpProcessInfo.hThread);    // libération du thread principal créé par CreateProcessWithLogonW
    Et bien voil� un thread rudement men�.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [VB6] "Ex�cuter en tant que" automatiquement un exe
    Par Asdorve dans le forum VB 6 et ant�rieur
    R�ponses: 4
    Dernier message: 17/03/2010, 08h36
  2. Tomcat : probl�me d'ex�cution en tant que service
    Par Aur�lien78 dans le forum Tomcat et TomEE
    R�ponses: 7
    Dernier message: 10/12/2009, 11h47
  3. R�ponses: 2
    Dernier message: 29/08/2008, 14h17
  4. R�ponses: 2
    Dernier message: 23/11/2007, 11h46
  5. Comment ex�cuter "en tant que" (RunAs) ?
    Par PierreT dans le forum API, COM et SDKs
    R�ponses: 9
    Dernier message: 21/09/2005, 17h56

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