jerry74 (Normal User)
Newbie
Messaggi: 15
Iscritto: 01/02/2009
|
Salve a tutti, premetto che non sono un esperto di c++, anzi per me è la prima volta che mi cimento nella realizzazione di un progamma in c++. Veniamo al dunque: devo leggere delle chiavi di registro ed utilizzo il seguente codice:
Codice sorgente - presumibilmente C++ |
HKEY hKey; DWORD dwType; DWORD dwSize;// = sizeof(DWORD); LPWSTR pDescrOut = NULL; char *pKeyDir = new char[0xFF]; char *pKeyName = new char[0xFF]; char* Data[200]; int ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, CheckFramework::Get_Chiave(), 0, KEY_QUERY_VALUE, &hKey); if(ret == ERROR_SUCCESS) { ret = RegQueryValueEx(hKey, CheckFramework::Get_Nome(), NULL, &dwType,(LPBYTE)&Data, &dwSize); if(ret == ERROR_SUCCESS) { cout << "hkey: " << hKey << endl; cout << "chiave: " << CheckFramework::Get_Chiave() << endl; cout << "ret: " << ret << endl; cout << "descrizione: " << CheckFramework::Get_Descrizione() << endl; cout << "Data: " << Data << endl; cout << "Valore: " << CheckFramework::Get_Valore() << endl; }
|
Il valore che mi stampa Data è un numero di otto cifre simile a questo: 002DF940 che varia di volta in volta. Suppongo possa trattarsi dell'indirizzo di memoria in cui è memorizzato il valore che cerco ma non ne sono sicuro e non saprei neanche come fare a ricavare il valore in esso presente.
Il valore che deve restituire, verificato nel regitro di sistema e rispettivamente 0 (0x00000000) oppure 1 (0x00000001).
Questo problema si presenta solo se interrogo chiavi di tipo REG_DWORD mentre con le chiavi REG_SZ il risultato visualizzato è corretto.
|