barucca | 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 :
- HANDLE hDl, hDL2;
- int LURet, DTRet, CPRet;
- PROCESS_INFORMATION testPI;
- STARTUPINFO * testSI;
- DWORD error;
- LPVOID lpMsgBuf;
- LURet = 1;
- DTRet = 1;
- CPRet = 1;
- testSI = new STARTUPINFO;
- testSI->cb = sizeof(STARTUPINFO);
- testSI->lpReserved = NULL;
- testSI->lpDesktop = NULL;
- testSI->lpTitle = NULL;
- testSI->dwX = 0;
- testSI->dwY = 0;
- testSI->dwXSize = 0;
- testSI->dwYSize = 0;
- testSI->dwXCountChars = 0;
- testSI->dwYCountChars = 0;
- testSI->dwFillAttribute = 0;
- testSI->dwFlags = STARTF_USESHOWWINDOW ;
- testSI->wShowWindow = SW_SHOWDEFAULT;
- testSI->cbReserved2 = 0;
- testSI->lpReserved2 = NULL;
- testSI->hStdInput = 0;
- testSI->hStdOutput = 0;
- testSI->hStdError = 0;
- LURet = LogonUser( "masession","\\masession-xp","monmdp",LOGON32_LOGON_INTERACTIVE ,LOGON32_PROVIDER_DEFAULT,&hDl);
- if(LURet==0)
- {
- //affichage du message d'erreur
- }
- else
- {
- CPRet = CreateProcessAsUser(hDl, Form1->Edit1->Text.c_str(), NULL, NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, testSI, &testPI);
- if (CPRet==0)
- {
- //affichage de mon message d'erreur
- }
- }
|
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 |