Bien le bonjour ami du win32
je veux lire une REG_BINARY
ci dessous j'ai mon code de crasseux.. cela fonctionne mais je sens la crasse sur mes yeux quand je relis..
j'utilise un BYTE lpData[1000];
si je met BYTE lpData[50]; ca me retourne error 234 (ERROR_MORE_DATA) ce qui est normal..
le dwSize me renseigne a la taille exact : 592
donc si je fais BYTE lpData[592]; cela fonctionne mais bon ..
j'essaye depuis plusieurs heures mais je n'arrive pas a faire en sorte que la taille de lpData soit redimensionné automatiquement..
j'ai essayé avec HeapAlloc ca mais ca veut pas !!
lpData=(BYTE*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize);
si quelqu'un pouvait me sauver ? :p je suis a 2 doigh de boire du destop
question bonus : est il possible de faire carrement un truc propre du genre un RegQueryValueEx qui va cherche le type de key(DWORD, BINARY etc) et qui alloue lpData en fonction de ce type ? avec ca je me sentirai tres propre
je me suis planté de forum semble t il .. quelqu'un peut le déplacer dans le bon forum svp ?
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
37
38 #include <tchar.h> #include <Windows.h> #include <stdio.h> int main() { HKEY hKey = HKEY_USERS; wchar_t * lpSubKey = L"S-1-5-21-1421355107-4124689249-2030404034-1473129\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\CIDSizeMRU"; HKEY phkResult; DWORD dwType; DWORD dwSize; BYTE lpData[1000]; wchar_t * lpValueName = L"29"; dwSize = sizeof(lpData); long lResult = RegOpenKeyExW(hKey, lpSubKey, 0, KEY_READ, &phkResult); wprintf(L"Trying to open the REG_BINARY : \"%ls\" in %ls\n\n",lpValueName, lpSubKey); if (lResult == 0) { wprintf(L"[OK] code Error : %ld \n",lResult); lResult = RegQueryValueExW(phkResult, lpValueName, NULL,&dwType, (LPBYTE)&lpData,&dwSize); if(lResult == 0) { wprintf(L"[OK] DWORD Value : %ls \n",lpData); wprintf(L"[OK] Value Size : %ld \n",dwSize); } else wprintf(L"[KO] code Error : %ld \n",lResult); } else { wprintf(L"[KO] code Error : %ld \n",lResult); } RegCloseKey(hKey); return 0; }
merci
Partager