Problème handle de processus

Résolu
cs_TT22 Messages postés 22 Date d'inscription mercredi 4 avril 2012 Statut Membre Dernière intervention 9 février 2013 - 19 juil. 2012 à 16:36
cs_TT22 Messages postés 22 Date d'inscription mercredi 4 avril 2012 Statut Membre Dernière intervention 9 février 2013 - 19 juil. 2012 à 20:33
Bonjour à tous.

Voici mon problème : Je souhaite modifier la priorité d'un processus, pour cela j'utilise la fonction SetPriorityClass().
Et pour obtenir le HANDLE du processus (à partir de son nom), j'utilise cette fonction :
HANDLE GetProcessHandle( char* szprocessname)
{
DWORD dwprocessids[1024];
DWORD dwreturned;
char szbuffer[MAX_PATH];
if(EnumProcesses(dwprocessids,1024,&dwreturned))
{
DWORD i;
HANDLE hProcess;
HMODULE hmod;
DWORD dwcount=dwreturned/sizeof(DWORD);
for(i=0;i<dwcount;i++)
{
hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,0,dwprocessids[i]);
if(hProcess)
{
if(EnumProcessModules(hProcess,&hmod,sizeof(HMODULE),&dwreturned))
{
GetModuleBaseName(hProcess,hmod,szbuffer,MAX_PATH);
if(!lstrcmpi(szbuffer,szprocessname))return hProcess;
}
CloseHandle(hProcess);
}
}
}
return NULL;
}

Mais le problème est que ça ne fonctionne pas.
J'ai essayé d'utiliser un handle retourné par la fonction GetCurrentProcess() et ça fontionne.
Donc, c'est ma fonction GetProcessHandle() qui a un problème, et je n'arrive pas à savoir où
Donc, quelqu'un voit-il ce qui ne va pas ?

2 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
19 juil. 2012 à 20:06
Salut,

Avant d'appeler la fonction : SetPriorityClass
tu as oublié le flag : PROCESS_SET_INFORMATION (0x0200)
dans la fonction OpenProcess

sinon

il faut activer le flag SeDebugPrivilege pour avoir les "full access right" sur le handle.

Voir l'API : AdjustTokenPrivileges
avec : SE_PRIVILEGE_ENABLED

bye...
3
cs_TT22 Messages postés 22 Date d'inscription mercredi 4 avril 2012 Statut Membre Dernière intervention 9 février 2013
19 juil. 2012 à 20:33
Merci beaucoup, ça fonctionne !
0
Rejoignez-nous