Hello tout le monde =)
Un problème qui me triture l'esprit en cette soirée est l'accès à une valeur du registre avec l'api win32, laquelle semble avoir décidé de me les briser vu qu'aucun code ne fonctionne de mon côté sous code::blocks, qu'il soit de moi ou pompé honteusement.
Précédemment le code suivant me renvoyait un problème de header (erreur 0x06), j'ai réglé le problème à l'aide du peu de documentation que j'ai pu trouver là-dessus, mais à présent c'est un joli rapport d'erreur qui m'arrive entre les gencives quand je veux tester mon code, qui cette fois m'envoie un code d'exception 0x05, ce qui m'étonne c'est une erreur de droit d'accès alors que je dev sous admin.
EDIT : J'ai fini par trouver la solution, qui était sous mon nez d'ailleurs, au bout de la n-ème lecture de la doc msdn j'ai fini par trouver mon erreur. Désolé T_T
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 #define REG_MAXLEN 2000 HKEY hkey = NULL; //Déclaration handle clé registre char lbuffer[REG_MAXLEN]; //Déclaration du buffer de récupération DWORD lbufferlen = REG_MAXLEN; if((RegOpenKeyEx(HKEY_CURRENT_USER,"SessionInformation", 0, KEY_EXECUTE, &hkey)) != ERROR_SUCCESS) //Procédure en cas d'échec { printf("\nfailed opening handle"); EXIT_FAILURE; } //Handle ouvert printf("handle successfuly opened"); if((RegQueryValueEx(hkey, "ProgramCount", NULL, NULL, (BYTE*)lbuffer, &lbufferlen)) != ERROR_SUCCESS) //Procédure d'erreur { printf("\nfailed querying value"); EXIT_FAILURE; }
Par contre la doc ne dit pas vraiment sous quel format on peut récupérer les données dans ledit buffer. Je sens que déjà c'est pas dans un char comme j'ai fait et que ça ressemble plus à un type propre à l'api, pour le cas actuel je me retrouver avec de jolis symboles dans mon shell ou une valeur hexa qui a rien à voir avec les 3 applis en cours.
Partager