boumarsel
Messages postés298Date d'inscriptionjeudi 12 juin 2003StatutMembreDernière intervention 9 juillet 2008
-
18 oct. 2004 à 04:23
boumarsel
Messages postés298Date d'inscriptionjeudi 12 juin 2003StatutMembreDernière intervention 9 juillet 2008
-
19 oct. 2004 à 22:51
je pose bcp de kestions ces derniers jr:)
je veux attribuer deux privileges à mon application (SE_DEBUG_NAME et SE_SHUTDOWN_NAME)
le code qui pose le probleme :
**********
HANDLE hToken;
LUID DebugValue,DebugValue2;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);
LookupPrivilegeValue((LPSTR) NULL, SE_DEBUG_NAME, &DebugValue);
LookupPrivilegeValue((LPSTR) NULL, SE_SHUTDOWN_NAME, &DebugValue2);
tkp.PrivilegeCount = 2;
tkp.Privileges[0].Luid = DebugValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
tkp.Privileges[1].Luid = DebugValue2;
tkp.Privileges[1].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,0,NULL,NULL);
CloseHandle(hToken);
***********
le message d'erreur:
'Stack around the variable 'tkp' was corrupted '
le meme message, que se soit en debug ou release, et l'application continue son execution sans probleme quand je clique sur continuer.
***********
pour me débrouiller j'ai changé mon code :
CloseHandle(hToken);
***********
Ce code fonctionne correctement, mais je trouve que c'est bete comme solution,en plus je veux comprendre pourkoi ça n'a pas marché au debut.
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 18 oct. 2004 à 14:14
Je regarde ce code à tête reposée et j'ai deux remarques :
1) pense à fermer le handle sur ton process après avoir ajusté les tokens
2) est-il possible de faire #define ANYSIZE_ARRAY 2 avant windows.h sans tout mettre en l'air ?
boumarsel
Messages postés298Date d'inscriptionjeudi 12 juin 2003StatutMembreDernière intervention 9 juillet 20081 19 oct. 2004 à 22:51
En cherchant ANYSIZE_ARRAY dans winnt.h j'ai trouvé qu'elle est utilisée dans d'autres structures, donc vaut mieux la laisser comme elle est.
et pour la premiere solution, ça marche pas aussi car il n'arrive pas à convertir le type de la variable "tkp" en PTOKEN_PRIVILEGES ds la fonction AdjustTokenPrivileges(hToken,FALSE,&tkp,0,NULL,NULL);
donc je pense que je serais obligé d'ajuster les privileges par 2 appels à la fonction "AdjustTokenPrivileges", a moins si tu me propose une autre solution