Bonjour,

Je suis en train de developper un application qui ne doit pas etre lancée avec le menu contextuel en cliquant sur "Lancer en tant qu'administrateur..."

En meme temps cette application doit appeler la fonction CallNtPowerInformation pour surpprimer le fichier hiberfil.sys d'hibernation.

Pour cela, avant d'appler cette fonction, je demande le privilege SE_CREATE_PAGEFILE_NAME, mais la fonction AdjustTokenPrivileges me retourne toujours ERROR_NOT_ALL_ASSIGNED, alors que je dois imperativement avoir ce droit pour pouvoir supprimer ce fichier.

Est ce quelqu'un pourra m'aider à regler ce probleme ?

Voila le bout de code que j'utilisa pour ca :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
if (FALSE == OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &_hToken))
{
     _ErrorCode = ERROR_INVALID_ACCESS;
     goto Leave;
}
 
if (FALSE == LookupPrivilegeValue(NULL, SE_CREATE_PAGEFILE_NAME, &_TokenPrivileges.Privileges[0].Luid))
{
     _ErrorCode = ERROR_INVALID_ACCESS;
     goto Leave;
}
else
{
        DWORD    _SizeName    =    512;
        LookupPrivilegeName(NULL, &_TokenPrivileges.Privileges[0].Luid, _Name,    &_SizeName);
 
}
 
_TokenPrivileges.PrivilegeCount    =    1;
_TokenPrivileges.Privileges[0].Attributes    =    SE_PRIVILEGE_ENABLED;
 
if (FALSE == AdjustTokenPrivileges(_hToken, FALSE, &_TokenPrivileges, 0, (PTOKEN_PRIVILEGES)NULL, 0))
{
   _ErrorCode = ERROR_INVALID_ACCESS;
   goto Leave;
}
else
{
   _ErrorCode    =    GetLastError();
 
   if (ERROR_NOT_ALL_ASSIGNED == _ErrorCode)
   {
        Log(LOG_ERROR,"Mais le privilege n'a pas été chargé.\n");
   }
}
Merci d'avance