Envoyé par
Melem
Qu'un handle de clé soit négatif ne signifie pas qu'il soit invalide. Ne peux-tu pas poster le code entier ?
Pas de souci :
Voici le code de la fonction chargée de récupérer le handle :
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
| HKEY __stdcall my_OpenKey(UNICODE_STRING KeyToOpen, unsigned char path[])
{
HKEY hKeyOpen;
ULONG Status;
OBJECT_ATTRIBUTES ObjectAttributes;
InitializeObjectAttributes(
&ObjectAttributes,
&KeyToOpen,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
Status = NtOpenKey(
&hKeyOpen,
KEY_READ,
&ObjectAttributes);
if(Status != STATUS_SUCCESS)
{
if (Status == STATUS_INVALID_HANDLE)
printf("STATUS_INVALID_HANDLE\n");
else if (Status == STATUS_ACCESS_DENIED)
printf("STATUS_ACCESS_DENIED\n");
printf("NTSTATUT = %08x\n", Status);
exit(EXIT_FAILURE);
}
free(&hKeyToOpen);
return (hKeyOpen);
} |
Et je l'appelle depuis le main :
hKey = my_OpenKey(NtWcharFullPath, path_temp);
Et ensuite je passe ce handle à NtQueryKey, et là le NTSTATUT renvoyé par NtQueryKey est égal à STATUT_INVALID_HANDLE.
A noter que la clé qui pose problème est celle-ci :
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Perflib\009"
Ce qu'elle a de particulier, c'est la longueur de sa valeur counter...
Si tu as besoin d'autre chose, demande-le moi.
Merci
Partager