Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2271 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  lancer un programme sous une session differente

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

lancer un programme sous une session differente

n°1291968
barucca
Posté le 25-01-2006 à 15:00:16  profilanswer
 

Bonjour a tous,
 
Je travaille sous win XP et avec C++ builder 6.
Je souhaiterais pouvoir installer un logiciel et ses données sur une session administrateur et lancer ce logiciel depuis une session utilisateur (compte limité).
 
Je sais qu'il est possible sous xindows XP de lancer un executable en tant qu'une autre personne : clic droit sur l'executable, puis "executer en tant que" et choisir le compte à utiliser.
 
Mon but serais de faire la même chose depuis un programme :  
 
Voici ce que j'ai fait :  

Code :
  1. HANDLE hDl, hDL2;
  2. int LURet, DTRet, CPRet;
  3. PROCESS_INFORMATION testPI;
  4. STARTUPINFO * testSI;
  5. DWORD error;
  6. LPVOID lpMsgBuf;
  7. LURet = 1;
  8. DTRet = 1;
  9. CPRet = 1;
  10. testSI = new STARTUPINFO;
  11. testSI->cb = sizeof(STARTUPINFO);
  12. testSI->lpReserved = NULL;
  13. testSI->lpDesktop = NULL;
  14. testSI->lpTitle = NULL;
  15. testSI->dwX = 0;
  16. testSI->dwY = 0;
  17. testSI->dwXSize = 0;
  18. testSI->dwYSize = 0;
  19. testSI->dwXCountChars = 0;
  20. testSI->dwYCountChars = 0;
  21. testSI->dwFillAttribute = 0;
  22. testSI->dwFlags = STARTF_USESHOWWINDOW ;
  23. testSI->wShowWindow = SW_SHOWDEFAULT;
  24. testSI->cbReserved2 = 0;
  25. testSI->lpReserved2 = NULL;
  26. testSI->hStdInput = 0;
  27. testSI->hStdOutput = 0;
  28. testSI->hStdError = 0;
  29. LURet = LogonUser( "masession","\\masession-xp","monmdp",LOGON32_LOGON_INTERACTIVE ,LOGON32_PROVIDER_DEFAULT,&hDl);
  30. if(LURet==0)
  31. {
  32. //affichage du message d'erreur
  33. }
  34. else
  35. {
  36. CPRet = CreateProcessAsUser(hDl, Form1->Edit1->Text.c_str(), NULL, NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, testSI, &testPI);
  37. if (CPRet==0)
  38. {
  39.  //affichage de mon message d'erreur
  40. }
  41. }


 
Je me logue en tant que l'utilisateur que je veux etre et je tente de lancer mon application avec cet utilisateur.
 
Je penses ne pas être loin de la solution, mais une option doit etre mauvaise car la reponse que j'ai est un message d'erreur me disant que je ne dispose pas d'un privilege necessaire pour faire cette operation.
 
Quelqu'un aurait-il une idéee de ce qui cloche???
 
Merci

Message cité 1 fois
Message édité par barucca le 25-01-2006 à 15:07:29
mood
Publicité
Posté le 25-01-2006 à 15:00:16  profilanswer
 

n°1291982
m3z
il faut toujours faire simple
Posté le 25-01-2006 à 15:12:33  profilanswer
 

Windows :-O)))
Non j'deconne  

n°1291984
barucca
Posté le 25-01-2006 à 15:13:21  profilanswer
 

:) j'y ai pensé aussi, mais je me suis dis que ca ne pouvait pas etre si facile!! :p
d'autres idées???
en fait je n'arrive pas a cerner si ca viens de mon code, une mauvaise option, ou de ma session windows, si il me manque une case a cocher quelque part ou quelque chose comme ca...


Message édité par barucca le 25-01-2006 à 15:14:32
n°1292110
breizhbugs
Posté le 25-01-2006 à 17:16:36  profilanswer
 

barucca a écrit :

Bonjour a tous,
Je penses ne pas être loin de la solution, mais une option doit etre mauvaise car la reponse que j'ai est un message d'erreur me disant que je ne dispose pas d'un privilege necessaire pour faire cette operation.


Le mieux est de savoir quel est le privilege qu'il te faut!
Quel est l'erreur exacte?

n°1292395
barucca
Posté le 26-01-2006 à 08:47:50  profilanswer
 

l'erreur est "le client ne dispose pas d'un privilege necessaire"... tres explicite!! ;)

n°1292435
barucca
Posté le 26-01-2006 à 10:02:56  profilanswer
 

bon je suis sur une piste si on trouve je posterais le resultat, apparemment il faudrait modifier les DACL du user et du bureau...
suite au prochain épisode...

n°1293280
barucca
Posté le 27-01-2006 à 11:42:44  profilanswer
 

tout compte fait on a trouvé un exemple sur la MSDN qui marche en mode console... on a donc laissé tomber le mode graphique.  
Par contre on cherche toujours à nos moments perdus car c'est frustrant de savoir qu'on été pas loin!! ;)

n°1298267
barucca
Posté le 03-02-2006 à 08:36:56  profilanswer
 

bonjour a tous!!!
alors l'exemple que nous avons trouvé sur la MSDN est pour une application console, mais en tunant un peu on a reussi à faire avec un parametre pour pouvoir lancer plusieurs programmes.
pour trouver le lien sur la fonction principale avec un exemple : recherchez dans la MSDN : CreateProcessWithLogonW

n°1298426
breizhbugs
Posté le 03-02-2006 à 11:50:40  profilanswer
 

Bonjour,  
merci, c'est toujours bon a savoir.

n°1299621
barucca
Posté le 06-02-2006 à 10:01:27  profilanswer
 

y a pas de quoi, on a bien galéré, autant que ca serve!! ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  lancer un programme sous une session differente

 

Sujets relatifs
[C] Probleme dans un programme de cryptageSession et securite
[Résolu]pb d'execution de programme[c]Lancer un .bat
convrertir un programme fait en c++ en delphiProbleme variable de session et requete sql
Question bete sur un programme java[Python] Lancer un script sans installer les 36 modules associés
Proteger un programme PHPFaire un programme en C++ pour les processeurs Dual Core
Plus de sujets relatifs à : lancer un programme sous une session differente


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR