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 :
HANDLE hToken;
LUID DebugValue;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);
LookupPrivilegeValue((LPSTR) NULL, SE_DEBUG_NAME, &DebugValue);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = DebugValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,0,NULL,NULL);
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);
LookupPrivilegeValue((LPSTR) NULL, SE_SHUTDOWN_NAME, &DebugValue);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = DebugValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,0,NULL,NULL);
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.
merci